NSManagedObjectID文档声明:
NSManagedObjectID对象是托管对象的紧凑通用标识符。这构成了核心数据框架中唯一的基础。托管对象ID在单个应用程序中的托管对象上下文之间以及多个应用程序(如在分布式系统中)中唯一标识相同的托管对象。
我脑子里的翻译:“可能在我的应用程序的所有实例集中,任何两个NSManagedObjectID都不会相同。”
CFUUID文件说明:
UUIDs ...是128位值 保证是独一无二的。 UUID是 在空间和时间上都是独一无二的 通过组合一个独特的值 它就是计算机 生成 - 通常是以太网 硬件地址和值 代表的数量 自10月以来每隔100纳秒 15,1582年00:00:00。
我脑子里的翻译:“肯定在我的应用程序的所有实例集中,任何两个CFUUID都不会相同。”
NSManagedObjectID被描述为“通用标识符”这一事实使我几乎可以肯定它们提供与CFUUID相同的唯一性,而“跨越空间和时间的独特”绝对没有任何怀疑的余地。任何拥有比我更多核心数据经验的人都可以确认或否认我的想法吗?
答案 0 :(得分:2)
除了唯一性之外,还有一种情况是对象ID会发生变化,如果在将对象持久化到磁盘之前进行查询,则会出现这种情况。保存后,它将具有不同的ID。除此之外,ID不会改变。我只想指出这一点,因为在我弄清楚发生了什么之前,它让我有些困惑。
我无法评论用于生成NSManagedObjectID的散列,但看起来它匹配另一个NSManagedObject的几率很小,基于查看生成的ID。