Swift 常用协议整理(表格版)
#
以下基于 Swift 标准库和开发实践,按功能分类整理常用协议及核心用途,结合搜索结果补充完整性:
基础类型协议
#
协议名称 | 核心用途 | 典型应用场景 |
---|
Equatable | 支持值相等性比较(== ) | 集合去重、排序判断 |
Hashable | 提供哈希值(hashValue ) | 字典键、集合元素存储 |
Comparable | 支持大小比较(< , > 等) | 排序算法、优先级队列 |
CaseIterable | 自动生成 allCases 集合,遍历枚举所有值 | 动态生成枚举选项列表 |
Identifiable | 提供唯一标识符(id ) | SwiftUI 列表渲染优化 |
集合操作协议
#
协议名称 | 核心用途 | 典型应用场景 |
---|
Sequence | 支持元素线性遍历(如 for...in ) | 实现自定义迭代逻辑 |
Collection | 扩展 Sequence ,支持下标访问和 count 属性 | 数组、字符串等集合操作 |
MutableCollection | 允许通过下标修改元素 | 动态修改集合内容 |
RangeReplaceableCollection | 支持范围替换操作(如 append , removeAll ) | 动态数组管理 |
BidirectionalCollection | 支持双向遍历(如反向迭代) | 链表、复杂数据结构 |
数据序列化与转换协议
#
协议名称 | 核心用途 | 典型应用场景 |
---|
Codable | 支持 JSON/XML 序列化与反序列化 | 网络请求、本地存储 |
CustomStringConvertible | 自定义 description 属性控制调试输出 | 日志打印、调试信息优化 |
RawRepresentable | 将类型与原始值(如 Int , String )绑定 | 枚举原始值定义 |
功能增强协议
#
协议名称 | 核心用途 | 典型应用场景 |
---|
ExpressibleByLiteral | 支持通过字面量初始化(如 ExpressibleByStringLiteral ) | 自定义类型字面量赋值 |
OptionSet | 将枚举定义为可组合的选项集(按位运算) | 权限管理、状态标记 |
Numeric | 约束数值类型(如 Int , Double ),支持算术运算 | 泛型数学运算 |
特殊用途协议
#
协议名称 | 核心用途 | 典型应用场景 |
---|
LocalizedError | 提供本地化错误描述(errorDescription ) | 用户友好的错误提示 |
CustomNSError | 与 Objective-C 的 NSError 互操作 | 混合开发错误传递 |
View (SwiftUI) | 定义 UI 组件的布局与行为 | SwiftUI 界面开发 |
补充说明
#
- 协议继承:部分协议存在层级关系(如
Sequence → Collection → BidirectionalCollection
)。 - 关联类型:协议中可通过
associatedtype
定义泛型约束(如 Collection
的 Element
类型)。 - 协议扩展:通过
extension Protocol
可为协议添加默认实现(如 Collection
的 isEmpty
方法)。
如需完整协议列表,可参考 Swift 官方文档或进一步查阅标准库源码。