Swift 教程

Swift 教程(从零到上手)

Swift 是 Apple 官方推出的现代编程语言,用于开发 iOS、macOS、watchOS、tvOS 应用。它语法简洁、类型安全、性能高,非常适合初学者和专业开发者。


一、环境准备

1. 安装 Xcode(推荐)

2. 在线 Playground(无需安装)


二、Hello World

print("Hello, World!")

在 Playground 中直接运行即可看到输出。


三、基本语法

1. 变量与常量

var name = "张三"        // 可变变量
let age = 18            // 不可变常量(推荐使用 let)
name = "李四"           // OK
// age = 20             // 错误!常量不可修改

2. 数据类型

类型示例说明
Intlet count = 10整数
Doublelet pi = 3.14双精度浮点
Floatlet f: Float = 3.14单精度
Boollet isActive = true布尔值
Stringlet greeting = "Hello"字符串
Characterlet letter: Character = "A"单个字符

Swift 是强类型语言,类型推断非常智能。


四、集合类型

1. 数组(Array)

var fruits = ["苹果", "香蕉", "橙子"]
fruits.append("葡萄")
print(fruits[1])        // 香蕉
print(fruits.count)     // 4

2. 字典(Dictionary)

var scores = ["张三": 95, "李四": 88]
scores["王五"] = 70
print(scores["李四"] ?? 0)  // 88

3. 集合(Set)

var colors: Set = ["红", "绿", "蓝"]
colors.insert("黄")

五、控制流

1. if 语句

let temperature = 25

if temperature < 0 {
    print("很冷")
} else if temperature < 20 {
    print("凉爽")
} else {
    print("温暖")
}

2. switch 语句(强大!)

let grade = "A"

switch grade {
case "A":
    print("优秀")
case "B", "C":
    print("良好")
default:
    print("需努力")
}

支持区间匹配、元组、where 等高级用法。

let point = (3, 4)

switch point {
case (0, 0):
    print("原点")
case (_, 0):
    print("x轴")
case let (x, y) where x == y:
    print("对角线")
default:
    print("其他点")
}

3. for 循环

for i in 1...5 {
    print(i)
}

// 遍历数组
for fruit in fruits {
    print(fruit)
}

// 带索引
for (index, fruit) in fruits.enumerated() {
    print("\(index): \(fruit)")
}

4. while / repeat-while

var n = 5
while n > 0 {
    print(n)
    n -= 1
}

六、函数

func greet(name: String, age: Int) -> String {
    return "你好,\(name),今年 \(age) 岁"
}

let message = greet(name: "小明", age: 20)
print(message)

参数标签

func sayHello(to name: String) {
    print("Hello, \(name)!")
}
sayHello(to: "Tom")  // 必须写 to

默认参数

func power(_ base: Int, exponent: Int = 2) -> Int {
    return Int(pow(Double(base), Double(exponent)))
}
print(power(3))      // 9
print(power(3, 3))   // 27

七、可选类型(Optional)

Swift 的空安全核心机制。

var optionalName: String? = "张三"
optionalName = nil

// 解包方式1:强制解包(危险!)
print(optionalName!)

// 解包方式2:可选绑定(推荐)
if let name = optionalName {
    print("名字是 \(name)")
} else {
    print("没有名字")
}

// 解包方式3:空合运算符
let displayName = optionalName ?? "匿名"

八、结构体(Struct)

struct Person {
    var name: String
    var age: Int

    func sayHello() {
        print("Hi, I'm \(name)")
    }
}

var p = Person(name: "小红", age: 16)
p.sayHello()
p.age += 1

结构体是值类型,赋值时会复制。


九、类(Class)

class Car {
    var brand: String
    var speed = 0

    init(brand: String) {
        self.brand = brand
    }

    func accelerate() {
        speed += 10
    }
}

let myCar = Car(brand: "Tesla")
myCar.accelerate()

类是引用类型,赋值是引用。


十、枚举(Enum)

enum Direction {
    case up, down, left, right
}

let move = Direction.up

switch move {
case .up:
    print("向上")
default:
    print("其他方向")
}

带关联值的枚举

enum Result {
    case success(String)
    case failure(Error)
}

十一、协议(Protocol)

protocol Drivable {
    func drive()
}

struct Bike: Drivable {
    func drive() {
        print("骑自行车")
    }
}

class Truck: Drivable {
    func drive() {
        print("开卡车")
    }
}

十二、扩展(Extension)

extension Int {
    func squared() -> Int {
        return self * self
    }
}

print(5.squared())  // 25

十三、错误处理

enum LoginError: Error {
    case wrongPassword
    case userNotFound
}

func login(username: String, password: String) throws {
    if username.isEmpty {
        throw LoginError.userNotFound
    }
    if password != "123" {
        throw LoginError.wrongPassword
    }
}

// 使用
do {
    try login(username: "", password: "123")
} catch LoginError.userNotFound {
    print("用户不存在")
} catch {
    print("其他错误")
}

十四、闭包(Closure)

let numbers = [1, 2, 3, 4, 5]

// 完整写法
let doubled = numbers.map({ (n: Int) -> Int in
    return n * 2
})

// 简写
let doubled2 = numbers.map { $0 * 2 }

print(doubled2)  // [2, 4, 6, 8, 10]

十五、实战小项目:Todo List

struct TodoItem {
    var title: String
    var isCompleted = false
}

class TodoList {
    private var items: [TodoItem] = []

    func add(_ title: String) {
        items.append(TodoItem(title: title))
    }

    func toggle(index: Int) {
        guard index < items.count else { return }
        items[index].isCompleted.toggle()
    }

    func list() {
        for (i, item) in items.enumerated() {
            let status = item.isCompleted ? "✓" : "○"
            print("\(i). \(status) \(item.title)")
        }
    }
}

// 使用
let todo = TodoList()
todo.add("学习 Swift")
todo.add("写代码")
todo.toggle(index: 0)
todo.list()

学习资源推荐

资源链接
官方文档swift.org
Apple 官方教程developer.apple.com/tutorials/swift
Swift 语言指南(中文)docs.swift.org/swift-book
视频教程B站搜索 “Swift 入门”
Playground 练习Swift Playgrounds App

结语

你已经掌握了 Swift 的核心语法!接下来建议:

  1. Playground 多写小例子
  2. 尝试用 SwiftUI 做简单 App
  3. 参与开源项目或写自己的小工具

坚持练习,每日 30 分钟,1 个月后你就能开发自己的 iOS App!

需要 SwiftUI 教程iOS 项目实战?告诉我,我继续带你飞!🚀

文章已创建 2481

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部