【发布时间】:2017-05-23 05:09:44
【问题描述】:
我正在使用 Core Data 在 Swift 中构建一个简单的应用程序,并尝试决定是否应该在我的实体中存储一个唯一的 id。在我的研究中,我发现了这样的例子和不这样做的例子,但我没有发现这种决定背后的任何明确原因。
请注意:
- 我来自 RDBMS 背景,我知道 Core Data 是一个对象图,而不是关系数据库
- 我知道 Core Data 创建了一个NSManagedObjectID,但我如何确定这是否足够
我看到像 this (顺便说一下,从 7 年前)这样的帖子,其中列出了这些选项:
- 使用 -[NSManagedObject objectID]。请注意,此 ID 是临时的,直到 对象是第一次保存或调用
- [NSManagedObjectContext gainPermanentIDsForObjects:error:] 使用 CFUUID 系列函数为您的每个对象生成一个 UUID -awakeFromInsert 方法
- 创建您自己的类似主键的系统,在模型中存储一个整数并随着每个对象的创建而递增
但我找不到太多关于哪些选项适合哪些情况的信息。
我应该问自己哪些问题来弄清楚我是否只需要 Core Data 的唯一标识符 (NSManagedObjectID),或者我是否应该超越它并选择将我自己的一个标识符加入其中。
【问题讨论】:
-
我不是 Core Data 编码员(只是涉足它),但我一直认为模型有两个可能的“来源”——mySQL 或 XML 文件。作为过去一生中的 MSSQL 人,我认为您喜欢的任何数据库设计都足以得到答案。事实上,我读过一些论点,CD 有时是一个不必要的层,而使用直接的 mySQL 设计可以简化事情。 (这些论点有时声称 CD 最大的优势是坚持。)
标签: ios core-data primary-key uniqueidentifier