如何比较核心数据中的实体身份

时间:2014-10-27 15:52:25

标签: core-data

在同一上下文中比较两个核心数据实体的身份的首选方法是什么?

只要我确定他们都在同一个环境中,只使用对象标识并执行EntityOne == EntityTwo即可吗?也就是说,我保证每个Core Data实体每个ManagedObjectContext最多存在一个Cocoa Object表示吗?

如果没有,首选方式是什么?在我的模型中,每个核心数据实体都有一个UUID属性,我确信一个是安全的(但也比较慢)进行比较。这里的最佳做法是什么(对于子孙后代,如果某人的模型没有UUID怎么办?)

如何跨上下文进行比较? [EntityOne inContext:moc] == [entityTwo inContext:moc]或类似的,还是有更快/更好/更优雅的方式?

1 个答案:

答案 0 :(得分:1)

如果您想知道两个托管对象是否代表相同的基础实例,正确的方法是使用objectID比较他们的isEqual:属性。

如果两个对象是从同一个上下文中提取的,那么它们实际上是相同的对象,因为Core Data不会在同一个上下文中为同一个实例创建多个对象。在严格限制的情况下使用==应该没问题。在任何其他情况下使用==都会产生错误的结果。