常见协议

Swift 常用协议整理(表格版) #

以下基于 Swift 标准库和开发实践,按功能分类整理常用协议及核心用途,结合搜索结果补充完整性:


基础类型协议 #

协议名称核心用途典型应用场景
Equatable支持值相等性比较(==集合去重、排序判断
Hashable提供哈希值(hashValue字典键、集合元素存储
Comparable支持大小比较(<, > 等)排序算法、优先级队列
CaseIterable自动生成 allCases 集合,遍历枚举所有值动态生成枚举选项列表
Identifiable提供唯一标识符(idSwiftUI 列表渲染优化

集合操作协议 #

协议名称核心用途典型应用场景
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 界面开发

补充说明 #

  1. 协议继承:部分协议存在层级关系(如 Sequence → Collection → BidirectionalCollection)。
  2. 关联类型:协议中可通过 associatedtype 定义泛型约束(如 CollectionElement 类型)。
  3. 协议扩展:通过 extension Protocol 可为协议添加默认实现(如 CollectionisEmpty 方法)。

如需完整协议列表,可参考 Swift 官方文档或进一步查阅标准库源码。