在同一上下文中比较两个核心数据实体的身份的首选方法是什么?
只要我确定他们都在同一个环境中,只使用对象标识并执行EntityOne == EntityTwo
即可吗?也就是说,我保证每个Core Data实体每个ManagedObjectContext最多存在一个Cocoa Object表示吗?
如果没有,首选方式是什么?在我的模型中,每个核心数据实体都有一个UUID属性,我确信一个是安全的(但也比较慢)进行比较。这里的最佳做法是什么(对于子孙后代,如果某人的模型没有UUID怎么办?)
如何跨上下文进行比较? [EntityOne inContext:moc] == [entityTwo inContext:moc]
或类似的,还是有更快/更好/更优雅的方式?
答案 0 :(得分:1)
如果您想知道两个托管对象是否代表相同的基础实例,正确的方法是使用objectID
比较他们的isEqual:
属性。
如果两个对象是从同一个上下文中提取的,那么它们实际上是相同的对象,因为Core Data不会在同一个上下文中为同一个实例创建多个对象。在严格限制的情况下使用==
应该没问题。在任何其他情况下使用==
都会产生错误的结果。