附录B 标准库与 Foundation 的分界

附录B:标准库与 Foundation 的分界

很多错误不是语法错误,而是“这个 API 到底属于谁”。标准库提供语言最核心的类型和算法,Foundation 提供日期、文件、网络、格式化等系统能力。分清边界,能让你写出更可移植、依赖更清楚的代码。

B.1 标准库常见内容

不需要额外导入即可使用:

类别例子
基础类型Int、Double、Bool、String、Character
集合Array、Dictionary、Set、Collection、Sequence
可选值Optional、Result
错误Error、Never
并发Task、AsyncSequence、actor、Sendable
内存与所有权Span、InlineArray、~Copyable
协议Equatable、Hashable、Comparable、Codable 相关协议

Codable、Equatable、Hashable 这些协议虽然常用,但具体编码器和解码器通常由 Foundation 或其他库提供。

B.2 Foundation 提供什么

import Foundation 后常见能力:

类别例子
日期与时间Date、Calendar、TimeZone、DateFormatter
文件系统FileManager、URL、Data
JSONJSONEncoder、JSONDecoder
数字处理Decimal、Measurement
字符串与格式化NumberFormatter、String(format:)
网络基础URLSession、URLRequest
线程与锁DispatchQueue、OperationQueue、Lock
国际化和本地化Locale、DateComponents

Foundation 在新平台上有 Swift 原生实现和 CoreFoundation 桥接两套路径。跨平台代码要留意某些 API 在 Linux 或 Windows 上不可用。

B.3 选择原则

  • 能用标准库表达,就不要引入 Foundation。
  • 数据模型优先使用纯 Swift 类型,格式化放到边界层。
  • 时间计算尽量用 Calendar 和 DateComponents,不要手工加减秒数。
  • 货币使用 Decimal,不要用 Double 表示金额。
  • 文件、网络和系统 API 集中封装,避免散落在业务代码里。

B.4 本章小结

问题优先选择
数组、字符串、可选值标准库
日期、文件、JSONFoundation
跨平台纯逻辑标准库 + 自定义协议
平台格式化边界层使用 Foundation
金额Decimal
最后修改 September 19, 2026: 更新 (3489033b1)