我需要一些唯一且一致的 ID 来索引数据,我尝试使用 NSManagedObject 的 objectID,但看起来对于同一个实体,它的 objectID 不断变化,有人知道这是否不一致吗?
问问题
6792 次
1 回答
20
除非您尚未保存新对象,否则 objectID 是唯一且一致的。
引用核心数据编程指南:
托管对象 ID 和 URI
NSManagedObjectID 对象是托管对象的通用标识符,并为核心数据框架中的唯一性提供了基础。受管对象 ID 在单个应用程序中的受管对象上下文之间和多个应用程序(如在分布式系统中)中唯一标识相同的受管对象。与数据库中的主键一样,标识符包含准确描述持久存储中的对象所需的信息,尽管详细信息并未公开。该框架完全封装了“外部”信息,并呈现了一个干净的面向对象接口。
NSManagedObjectID *moID = [managedObject objectID];
对象 ID 有两种形式。首次创建托管对象时,Core Data 为其分配一个临时 ID;只有当它被保存到持久存储时,Core Data 才会为托管对象分配一个永久 ID。您可以轻松发现 ID 是否是临时的:
BOOL isTemporary = [[managedObject objectID] isTemporaryID];
于 2012-05-31T03:54:46.330 回答