我看到有一种方法可以获取托管对象的唯一标识:
NSManagedObjectID *moID = [managedObject objectID];
但是,正如我所读,保存时会发生变化。
创建我自己的唯一 ID 并将其保存在每个对象中以确保它是唯一且不会更改的更好方法是什么?
最佳答案
您不能将 NSManagedObjectID 保存在 CoreData 实体中,并且其中没有可用作整数或字符串 ID 的属性。 因此,构建您自己的唯一标识符算法是一个可以接受的解决方案,如果您无法跟踪实体何时被保存,我在某些应用程序中这样做了。
例如,我以前遇到过类似的问题,当时我需要用实体的引用填充 UITableView 单元格,并在单击/触摸单元格后检索实体。
我通过使用 uri 表示找到了一个建议,但是但是我之前仍然需要保存上下文,但是我设法使用 NSFetchedResultsController 并找到了一个更可靠的解决方案而不是应用程序构建的 id .
[[myManagedObject objectID] URIRepresentation];
然后您可以稍后检索托管对象 ID 本身:
NSManagedObjectID* moid = [storeCoordinator managedObjectIDForURIRepresentation:[[myManagedObject objectID] URIRepresentation]];
通过 moid,我可以检索您的托管对象。
关于iphone - 核心数据 : Save unique object ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7465492/