当某物符合时Identifiable
,它必须返回可以被该物识别的东西。因此,您应该返回该情况下唯一的东西。对于String
base enum
,rawValue
是您的最佳选择:
extension Data: Identifiable { var id: String { rawValue } }
枚举通常也可以通过自身来标识:
extension Data: Identifiable { var id: Data { self } }
注意1:如果返回的东西总是唯一的,例如UUID,这意味着每次获取对象时都会得到一个新对象,这将杀死可重用性,并可能导致史诗般的内存和布局过程使用。
注意2:从Swift 5.1开始,不需要单行闭包return
。
注3:尽量不要使用诸如Data
您自己的类型之类的全局已知名称。至少像这样使用命名空间MyCustomNameSpace.Data
您可以通过元素的键路径之一使任何集合内联成为可迭代的:
例如self
:
List (Data.allCases, id:\.self)
或任何其他兼容的键路径:
List (Data.allCases, id:\.rawValue)