NSManagedObject对象ID在空间和时间上是唯一的,就像CFUUID一样吗?

时间:2011-01-21 19:05:54

标签: iphone objective-c ipad core-data nsmanagedobject

NSManagedObjectID文档声明:

  

NSManagedObjectID对象是托管对象的紧凑通用标识符。这构成了核心数据框架中唯一的基础。托管对象ID在单个应用程序中的托管对象上下文之间以及多个应用程序(如在分布式系统中)中唯一标识相同的托管对象。

我脑子里的翻译:“可能在我的应用程序的所有实例集中,任何两个NSManagedObjectID都不会相同。”

CFUUID文件说明:

  

UUIDs ...是128位值   保证是独一无二的。 UUID是   在空间和时间上都是独一无二的   通过组合一个独特的值   它就是计算机   生成 - 通常是以太网   硬件地址和值   代表的数量   自10月以来每隔100纳秒   15,1582年00:00:00。

我脑子里的翻译:“肯定在我的应用程序的所有实例集中,任何两个CFUUID都不会相同。”

NSManagedObjectID被描述为“通用标识符”这一事实使我几乎可以肯定它们提供与CFUUID相同的唯一性,而“跨越空间和时间的独特”绝对没有任何怀疑的余地。任何拥有比我更多核心数据经验的人都可以确认或否认我的想法吗?

1 个答案:

答案 0 :(得分:2)

除了唯一性之外,还有一种情况是对象ID会发生变化,如果在将对象持久化到磁盘之前进行查询,则会出现这种情况。保存后,它将具有不同的ID。除此之外,ID不会改变。我只想指出这一点,因为在我弄清楚发生了什么之前,它让我有些困惑。

我无法评论用于生成NSManagedObjectID的散列,但看起来它匹配另一个NSManagedObject的几率很小,基于查看生成的ID。