1. Swift基础语法
1.1 变量和常量
var age: Int = 25
let name: String = "Alice"
1.2 数据类型
let pi: Double = 3.14159
let isStudent: Bool = true
1.3 控制流
let number = 10
if number > 5 {
print("Number is greater than 5")
} else {
print("Number is not greater than 5")
}
1.4 循环
for i in 1...5 {
print(i)
}
2. 函数和闭包
2.1 定义函数
func greet(name: String) {
print("Hello, \(name)!")
}
2.2 闭包
let closure = { (name: String) -> String in
return "Hello, \(name)!"
}
print(closure("Bob"))
3. 集合类型
3.1 数组
let numbers = [1, 2, 3, 4, 5]
print(numbers[2])
3.2 字典
let person = ["name": "Alice", "age": 25]
print(person["name"])
3.3 集合操作
let numbers1 = [1, 2, 3]
let numbers2 = [4, 5, 6]
let combinedNumbers = numbers1 + numbers2
print(combinedNumbers)
4. 类和结构体
4.1 定义类
class Person {
var name: String
var age: Int
init(name: String, age: Int) {
self.name = name
self.age = age
}
}
4.2 定义结构体
struct Point {
var x: Int
var y: Int
}
5. 协议和扩展
5.1 定义协议
protocol Speakable {
func speak()
}
5.2 扩展
extension Int {
func square() -> Int {
return self * self
}
}
let number = 5
print(number.square())
6. 异常处理
6.1 定义错误
enum MyError: Error {
case outOfRange
}
6.2 抛出错误
throw MyError.outOfRange
6.3 捕获错误
do {
try throwMyError()
} catch {
print("Caught an error!")
}
7. 网络编程
7.1 使用URLSession
let url = URL(string: "https://www.example.com")!
let task = URLSession.shared.dataTask(with: url) { data, response, error in
if let error = error {
print("Error: \(error)")
} else if let data = data {
print("Data: \(String(data: data, encoding: .utf8)!)")
}
}
task.resume()
8. 设计模式
8.1 单例模式
class Singleton {
static let shared = Singleton()
private init() {}
}
8.2 观察者模式
protocol Observer {
func update()
}
class Subject {
var observers: [Observer] = []
func addObserver(_ observer: Observer) {
observers.append(observer)
}
func notify() {
for observer in observers {
observer.update()
}
}
}
9. 图形界面编程
9.1 使用UIKit
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let label = UILabel(frame: CGRect(x: 100, y: 100, width: 200, height: 40))
label.text = "Hello, World!"
self.view.addSubview(label)
}
}
10. 优化技巧
10.1 使用懒加载
class Person {
lazy var name: String = "Alice"
}
10.2 使用泛型
func swap<T>(_ a: inout T, _ b: inout T) {
let temp = a
a = b
b = temp
}
11. 实战项目
11.1 计算器
import UIKit
class CalculatorViewController: UIViewController {
@IBOutlet weak var displayLabel: UILabel!
var currentNumber: Double = 0
var operation: String = ""
@IBAction func numberButtonTapped(_ sender: UIButton) {
let number = Double(sender.currentTitle!)!
currentNumber = currentNumber * 10 + number
displayLabel.text = String(currentNumber)
}
@IBAction func operationButtonTapped(_ sender: UIButton) {
operation = sender.currentTitle!
}
@IBAction func equalsButtonTapped(_ sender: UIButton) {
let result = performOperation(operation: operation, number: currentNumber)
displayLabel.text = String(result)
currentNumber = result
operation = ""
}
func performOperation(operation: String, number: Double) -> Double {
switch operation {
case "+":
return currentNumber + number
case "-":
return currentNumber - number
case "*":
return currentNumber * number
case "/":
return currentNumber / number
default:
return 0
}
}
}
12. 总结
通过以上100道题目的练习,相信你已经掌握了Swift编程的基础和技巧。在接下来的学习中,你可以尝试自己动手实现一些有趣的项目,不断提高自己的编程能力。祝你学习愉快!
