杰瑞科技汇

Swift语言入门教程该怎么学?

Swift 入门教程

前言:为什么选择 Swift?

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

Swift语言入门教程该怎么学?-图1
(图片来源网络,侵删)
  • 安全: 语法严谨,能有效避免 C 语言中的许多常见错误(如空指针解引用)。
  • 快速: 性能媲美 C++ 和 Objective-C,是开发高性能应用的首选。
  • 现代: 语法简洁、易读,支持函数式编程等现代编程范式。
  • 交互式: 可以使用 Playground 进行实时编码和预览,学习曲线平缓。
  • 开源: Swift 已成为开源项目,不仅限于苹果生态,也可用于 Linux、服务器端开发等。

第一部分:准备工作与环境搭建

在开始之前,你需要准备开发环境。

推荐工具:Xcode

Xcode 是苹果官方的集成开发环境,是开发 Swift 应用的最佳选择。

  1. 下载安装:

    Swift语言入门教程该怎么学?-图2
    (图片来源网络,侵删)
    • 访问 Mac App Store 搜索 "Xcode" 并下载安装。
    • 注意: Xcode 仅支持在 macOS 系统上运行。
  2. 创建第一个项目:

    • 打开 Xcode,选择 "Create a new Xcode project"。
    • 选择 "iOS" -> "App" (或 "macOS" -> "Command Line Tool"),然后点击 "Next"。
    • 填写项目名称(HelloSwift),选择语言为 Swift,点击 "Next" 并选择一个位置保存项目。
  3. 使用 Playground (可选,但强烈推荐):

    • Playground 是一个可以即时看到代码运行结果的交互式环境,非常适合学习和实验。
    • 在 Xcode 菜单栏选择 File -> New -> Playground...,选择一个模板即可开始。

第二部分:Swift 基础语法

常量与变量

Swift 使用 let 声明常量(一旦赋值就不能再改变),使用 var 声明变量(可以随时修改)。

// 常量
let maximumNumberOfLoginAttempts = 10
// maximumNumberOfLoginAttempts = 20 // 这行代码会报错
// 变量
var currentLoginAttempt = 0
currentLoginAttempt = 1 // 这行代码是正确的

类型注解 (Type Annotation): 如果声明时没有赋值,可以使用冒号 指明类型。

Swift语言入门教程该怎么学?-图3
(图片来源网络,侵删)
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 使用 classstruct 来定义类型。

  • 类:

    • 引用类型。
    • 可以继承。
    • 有析构函数(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 应用了。

  1. 用户界面:

    • Storyboard: 一种可视化拖拽设计界面的工具。
    • SwiftUI: 苹果推出的现代化声明式 UI 框架,直接用 Swift 代码来构建界面,更简单、更强大。推荐初学者学习 SwiftUI。
  2. 生命周期与入口:

    • iOS 应用的入口是 AppDelegate.swiftSceneDelegate.swift,它们处理应用的生命周期事件(如启动、进入后台、前台等)。
  3. MVC 模式:

    • iOS 开发遵循经典的 Model-View-Controller 模式。
      • Model (模型): 数据和业务逻辑(User 类)。
      • View (视图): 用户界面(SwiftUI 的 Text, Button)。
      • Controller (控制器): 连接 Model 和 View,处理用户输入。

第五部分:学习资源与总结

推荐资源

  1. 官方文档 (首选):

  2. 在线课程:

    • Stanford CS193p: 斯坦福大学的 iOS 开发公开课,非常经典。
    • Hacking with Swift: 由 Paul Hudson 创建的系列教程,内容详实,项目驱动。
  3. 社区与书籍:

    • Swift Forums: 官方论坛。
    • Ray Wenderlich: 提供大量高质量的编程教程。

学习路径建议

  1. 打好基础: 熟练掌握第二部分和第三部分的内容,这是 Swift 的核心。
  2. 动手实践: 不要只看不练!在 Playground 中尝试修改代码,观察结果。
  3. 学习 SwiftUI: 从一个简单的项目开始,比如一个 To-Do List (待办事项) 应用,练习将数据绑定到界面。
  4. 深入理解: 在实践中逐步理解内存管理(引用计数)、协议、泛型等更高级的概念。

Swift 是一门功能强大且优雅的语言,非常适合初学者入门,它的安全性和现代语法能让你专注于解决问题,而不是纠结于语言的陷阱,从今天开始,打开 Xcode,写下你的第一行 print("Hello, Swift!"),开启你的编程之旅吧!祝你学习愉快!

分享:
扫描分享到社交APP
上一篇
下一篇