Swift 标准库 (iOS/macOS):完整概述
Swift 标准库是一组基础类型、协议和函数,是 iOS、macOS、watchOS 和 tvOS 所有开发的基础。与许多语言的标准库较为精简不同,Swift 开箱即用地提供了丰富的工具集。在本文中,我们将详细解析日常开发中使用的库的关键组件。
基本数据类型和协议
库的基础由基本类型和协议构成,确保数据操作的一致性。
- 相等性和比较协议:
Equatable、Comparable、Hashable— 允许比较和哈希对象。 - 表示协议:
CustomStringConvertible、CustomDebugStringConvertible— 用于对象的字符串描述。 - 基本类型:
Int、Double、Bool、String、Character— 为最大性能而重新定义。
// 协议使用示例struct Person: Equatable, CustomStringConvertible { let name: String let age: Int var description: String { return "\\(name), \\(age) 岁" }}
let alice = Person(name: "爱丽丝", age: 30)let bob = Person(name: "鲍勃", age: 25)print(alice == bob) // falseprint(alice) // "爱丽丝, 30 岁"集合:数组、字典和集合
Swift 提供了三种主要集合类型,针对不同使用场景进行了优化。
数组 (Array)
有序集合,支持随机访问。支持动态扩展和缩减。
var numbers: [Int] = [1, 2, 3, 4, 5]numbers.append(6)numbers.remove(at: 0)let filtered = numbers.filter { $0 > 3 }print(filtered) // [4, 5, 6]字典 (Dictionary)
无序的“键-值”集合。键必须是 Hashable 的。
var capitals: [String: String] = [ "俄罗斯": "莫斯科", "法国": "巴黎", "日本": "东京"]capitals["德国"] = "柏林"if let russiaCapital = capitals["俄罗斯"] { print("俄罗斯的首都是 \\(russiaCapital)")}集合 (Set)
无序的唯一元素集合。非常适合成员资格检查和数学运算。
let setA: Set = [1, 2, 3, 4]let setB: Set = [3, 4, 5, 6]let intersection = setA.intersection(setB)let union = setA.union(setB)print(intersection) // [3, 4]print(union) // [1, 2, 3, 4, 5, 6]字符串操作
Swift 中的字符串是 Unicode 字符的集合,使得国际化处理变得非常简单。
- 字符串索引:
startIndex、endIndex、index(_:offsetBy:)— 安全的字符导航。 - 插值:
"\\(变量)"— 将值嵌入字符串。 - 多行字符串字面量:
""" """— 方便的格式化。
let greeting = "你好,世界!"let firstChar = greeting[greeting.startIndex] // "你"let index = greeting.index(greeting.startIndex, offsetBy: 3)let substring = greeting[index...] // "世界!"
// 插值和多行字符串let name = "Swift"let description = """\\(name) 语言用于开发iOS 和 macOS 应用程序。"""print(description)可选类型和 nil 处理
Swift 通过可选类型提供对缺失值的安全处理。这是该语言的关键特性之一。
var optionalName: String? = "阿列克谢"// Optional