有没有一种简单/通用的方法来比较两个对象以查看它们是否相同? “相同”是指相同的实体名称,所有属性和关系都相同,但是内部对象ID不同。

同样,是否有简单/通用的方法来找到差异?

最佳答案

您是否需要递归地包含关系的相等性(即关系指向的目的地与您定义的目的地相同)?您是否需要测试跨托管对象模型的相等性?您需要测试未提交的值吗?假设所有这些答案都是“否”,那么解决方案就不会太难了...

如果满足以下条件,则instance1等于instance2:

NSArray *allAttributeKeys = [[[instance1 entity] attributesByName] allKeys];

if([[instance1 entity] isEqual:[instance2 entity]]
&& [[instance1 committedValuesForKeys:allAttributeKeys] isEqual:[instance2 committedValuesForKeys:allAttributeKeys]]) {
  // instance1 "==" instance2
}

如果对以上任何问题的回答为"is",则解决方案将更加复杂。

警告

我不确定这是否是个好主意。如果您需要使用上面的解决方案,则可能要重新考虑您的设计。几乎肯定有更好的方法来做您要做的事情,而不会冒违反Core Data意图的风险。

10-01 02:50