Swift 入门教程
前言:为什么选择 Swift?
Swift 是苹果公司在 2025 年推出的一门现代化编程语言,用于开发 iOS、macOS、watchOS 和 tvOS 应用,它具有以下优点:

- 安全: 语法严谨,能有效避免 C 语言中的许多常见错误(如空指针解引用)。
- 快速: 性能媲美 C++ 和 Objective-C,是开发高性能应用的首选。
- 现代: 语法简洁、易读,支持函数式编程等现代编程范式。
- 交互式: 可以使用 Playground 进行实时编码和预览,学习曲线平缓。
- 开源: Swift 已成为开源项目,不仅限于苹果生态,也可用于 Linux、服务器端开发等。
第一部分:准备工作与环境搭建
在开始之前,你需要准备开发环境。
推荐工具:Xcode
Xcode 是苹果官方的集成开发环境,是开发 Swift 应用的最佳选择。
-
下载安装:
(图片来源网络,侵删)- 访问 Mac App Store 搜索 "Xcode" 并下载安装。
- 注意: Xcode 仅支持在 macOS 系统上运行。
-
创建第一个项目:
- 打开 Xcode,选择 "Create a new Xcode project"。
- 选择 "iOS" -> "App" (或 "macOS" -> "Command Line Tool"),然后点击 "Next"。
- 填写项目名称(
HelloSwift),选择语言为 Swift,点击 "Next" 并选择一个位置保存项目。
-
使用 Playground (可选,但强烈推荐):
- Playground 是一个可以即时看到代码运行结果的交互式环境,非常适合学习和实验。
- 在 Xcode 菜单栏选择
File -> New -> Playground...,选择一个模板即可开始。
第二部分:Swift 基础语法
常量与变量
Swift 使用 let 声明常量(一旦赋值就不能再改变),使用 var 声明变量(可以随时修改)。
// 常量 let maximumNumberOfLoginAttempts = 10 // maximumNumberOfLoginAttempts = 20 // 这行代码会报错 // 变量 var currentLoginAttempt = 0 currentLoginAttempt = 1 // 这行代码是正确的
类型注解 (Type Annotation): 如果声明时没有赋值,可以使用冒号 指明类型。

var welcomeMessage: String welcomeMessage = "Hello, world!"
数据类型
Swift 是一门强类型语言,编译器会自动推断大部分变量的类型。
- 整数:
Int(32位或64位,取决于平台) - 浮点数:
Double(64位,高精度),Float(32位) - 布尔值:
Bool(true,false) - 字符串:
String
let integer = 42 let pi = 3.14159 // Double let isAwesome = true // Bool var greeting = "Hi" // String
可选类型
这是 Swift 最核心、最重要的特性之一,用于处理“值可能不存在”的情况。
- 普通类型: 必须有值。
var name: String = "Alice" - 可选类型: 值可以是某个类型,也可以是
nil(表示“无值”),在类型名后加一个 。
var userName: String? // userName 可以是 String,也可以是 nil
userName = "Bob"
userName = nil // 这是允许的
// 可选类型的值在使用前必须“解包”(unwrap),否则会报错。
// 错误用法: print(userName) // 输出 "Optional("Bob")"
// 正确用法: 使用 if let 语句
if let name = userName {
print("Hello, \(name)!")
} else {
print("Hello, stranger!")
}
集合类型
-
数组: 有序值的集合。
var shoppingList: [String] = ["Eggs", "Milk"] shoppingList.append("Flour") // 添加元素 print(shoppingList[0]) // 访问第一个元素: "Eggs" -
字典: 无序的键值对集合。
var occupations: [String: String] = ["Malcolm": "Captain"] occupations["Kaylee"] = "Mechanic" print(occupations["Malcolm"] ?? "Unknown") // 使用 ?? 提供默认值
控制流
-
if 语句:
let temperatureInCelsius = 25 if temperatureInCelsius <= 0 { print("It's freezing.") } else if temperatureInCelsius >= 30 { print("It's hot.") } else { print("It's a nice day.") } -
for-in 循环:
// 遍历数组 let names = ["Anna", "Alex", "Brian", "Jack"] for name in names { print("Hello, \(name)!") } // 遍历字典 let numberOfLegs = ["spider": 8, "ant": 6, "cat": 4] for (animalName, legCount) in numberOfLegs { print("\(animalName)s have \(legCount) legs.") } -
while 循环:
var i = 1 while i <= 5 { print(i) i += 1 }
第三部分:Swift 进阶特性
函数
使用 func 关键字定义函数。
// 定义一个函数
func greet(person: String, day: String) -> String {
return "Hello \(person), today is \(day)."
}
// 调用函数
let greetingMessage = greet(person: "Bob", day: "Tuesday")
print(greetingMessage)
参数标签:
上面的 person: 和 day: 就是参数标签,用于调用时区分参数,你也可以自定义标签:
func greet(_ person: String, on day: String) -> String {
return "Hello \(person), today is \(day)."
}
greet("Bob", on: "Tuesday") // _ 表示忽略外部标签
闭包
闭包是自包含的函数代码块,可以在代码中被传递和使用,Swift 中的许多标准库函数(如 sorted(by:))都使用闭包。
let names = ["Chris", "Alex", "Ewa", "Barry", "David"]
// 使用闭包对数组进行排序
// $0 和 $1 是闭包中两个元素的简写,$0 代表第一个,$1 代表第二个
let sortedNames = names.sorted { (a: String, b: String) -> Bool in
return a > b
}
// 更简洁的写法
let sortedNamesShort = names.sorted { $0 > $1 }
print(sortedNames) // ["Ewa", "David", "Chris", "Barry", "Alex"]
面向对象编程
Swift 使用 class 和 struct 来定义类型。
-
类:
- 引用类型。
- 可以继承。
- 有析构函数(
deinit)。 - 有构造函数(
init)。
class Shape { var color: String = "black" func draw() { print("Drawing a \(color) shape.") } } class Circle: Shape { // 继承 var radius: Double = 1.0 // 重写父类方法 override func draw() { print("Drawing a \(color) circle with radius \(radius).") } } let myCircle = Circle() myCircle.color = "red" myCircle.radius = 5.0 myCircle.draw() // 输出: Drawing a red circle with radius 5.0. -
结构体:
- 值类型。
- 默认情况下,结构体的成员不会被继承。
- 更轻量级,适用于数据模型。
struct Point { var x: Double var y: Double } var somePoint = Point(x: 0.0, y: 0.0) somePoint.x = 10.0 print(somePoint) // Point(x: 10.0, y: 0.0)
第四部分:Swift 与 iOS 开发入门
掌握了 Swift 基础后,你就可以用它来构建真正的 iOS 应用了。
-
用户界面:
- Storyboard: 一种可视化拖拽设计界面的工具。
- SwiftUI: 苹果推出的现代化声明式 UI 框架,直接用 Swift 代码来构建界面,更简单、更强大。推荐初学者学习 SwiftUI。
-
生命周期与入口:
- iOS 应用的入口是
AppDelegate.swift和SceneDelegate.swift,它们处理应用的生命周期事件(如启动、进入后台、前台等)。
- iOS 应用的入口是
-
MVC 模式:
- iOS 开发遵循经典的 Model-View-Controller 模式。
- Model (模型): 数据和业务逻辑(
User类)。 - View (视图): 用户界面(SwiftUI 的
Text,Button)。 - Controller (控制器): 连接 Model 和 View,处理用户输入。
- Model (模型): 数据和业务逻辑(
- iOS 开发遵循经典的 Model-View-Controller 模式。
第五部分:学习资源与总结
推荐资源
-
官方文档 (首选):
-
在线课程:
- Stanford CS193p: 斯坦福大学的 iOS 开发公开课,非常经典。
- Hacking with Swift: 由 Paul Hudson 创建的系列教程,内容详实,项目驱动。
-
社区与书籍:
- Swift Forums: 官方论坛。
- Ray Wenderlich: 提供大量高质量的编程教程。
学习路径建议
- 打好基础: 熟练掌握第二部分和第三部分的内容,这是 Swift 的核心。
- 动手实践: 不要只看不练!在 Playground 中尝试修改代码,观察结果。
- 学习 SwiftUI: 从一个简单的项目开始,比如一个 To-Do List (待办事项) 应用,练习将数据绑定到界面。
- 深入理解: 在实践中逐步理解内存管理(引用计数)、协议、泛型等更高级的概念。
Swift 是一门功能强大且优雅的语言,非常适合初学者入门,它的安全性和现代语法能让你专注于解决问题,而不是纠结于语言的陷阱,从今天开始,打开 Xcode,写下你的第一行 print("Hello, Swift!"),开启你的编程之旅吧!祝你学习愉快!
