我需要为索引数据提供一些唯一且一致的ID,我尝试使用NSManagedObject的objectID,但看起来对于同一个实体,它的objectID不断变化,有人知道这是不一致吗?
答案 0 :(得分:18)
除非您没有保存新对象,否则objectID是唯一且一致的。
引用Core Data Programming Guide:
托管对象ID和URI
NSManagedObjectID对象是托管的通用标识符 对象,并为核心数据框架中的统一提供基础。一个 托管对象ID唯一地标识同一托管对象 在单个应用程序中的托管对象上下文之间 多个应用程序(如在分布式系统中)。像小学一样 密钥在数据库中,标识符包含所需的信息 准确描述持久存储中的对象,尽管如此 详细信息不会暴露。框架完全 封装“外部”信息并呈现一个干净的对象 面向接口。
NSManagedObjectID *moID = [managedObject objectID];
有两个 对象ID的形式。首次创建托管对象时,Core 数据为其分配临时ID;只有将它保存到持久性中 存储核心数据为托管对象分配永久ID。您可以 很容易发现身份证是否是暂时的:
BOOL isTemporary = [[managedObject objectID] isTemporaryID];