我是 CoreData 的新手,但我创建了一个对象,打算在 SwiftUI 中的 ForEach 循环内使用该数组。
在实体编辑器中,我添加了一个 UUID 属性stored_id
。然后在扩展中我写了以下内容:
extension Item: Identifiable {
public var id: UUID {
guard let stored_id else {
assertionFailure("No stored ID")
return UUID()
}
return stored_id
}
}
我觉得这很奇怪,原因有很多,比如根据 CoreData 的语义,stored_id 是可选的。出于某种原因,这难道不是不好的做法吗?
您可以让 Core Data 实体符合
Identifiable
,事实上,如果您今天创建一个新的 Core Data 项目(我相信从 Xcode 14 开始),那么Identifiable
在创建实体类时就已经添加了一致性:这是在 Xcode 16 中简单创建带有 Core Data 存储的新应用程序所生成的代码:
如果您确实想要/需要自行添加一致性,则无需添加额外的属性。您可以
NSManagedObject
像样板代码一样,简单地添加子类的内置标识,从而充分利用子类的内置标识。extension Item : Identifiable {}