NSManagedObject的objectID:它是否一致?

时间:2012-05-31 03:35:17

标签: core-data nsmanagedobject

我需要为索引数据提供一些唯一且一致的ID,我尝试使用NSManagedObject的objectID,但看起来对于同一个实体,它的objectID不断变化,有人知道这是不一致吗?

1 个答案:

答案 0 :(得分:18)

除非您没有保存新对象,否则objectID是唯一且一致的。

引用Core Data Programming Guide

  

托管对象ID和URI

     

NSManagedObjectID对象是托管的通用标识符   对象,并为核心数据框架中的统一提供基础。一个   托管对象ID唯一地标识同一托管对象   在单个应用程序中的托管对象上下文之间   多个应用程序(如在分布式系统中)。像小学一样   密钥在数据库中,标识符包含所需的信息   准确描述持久存储中的对象,尽管如此   详细信息不会暴露。框架完全   封装“外部”信息并呈现一个干净的对象   面向接口。

NSManagedObjectID *moID = [managedObject objectID]; 
     

有两个   对象ID的形式。首次创建托管对象时,Core   数据为其分配临时ID;只有将它保存到持久性中   存储核心数据为托管对象分配永久ID。您可以   很容易发现身份证是否是暂时的:

BOOL isTemporary = [[managedObject objectID] isTemporaryID];