Ответ 1
Нужно ли рекурсивно включать равенство отношений (т.е. отношения указывают на адресатов, которые равны вашему определению)? Нужно ли тестировать равенство между моделями управляемых объектов? Нужно ли тестировать незафиксированные значения? Предполагая, что ответ "нет" всем этим, решение не слишком сложно...
instance1
равен instance2
вашим определением, если:
NSArray *allAttributeKeys = [[[instance1 entity] attributesByName] allKeys];
if([[instance1 entity] isEqual:[instance2 entity]]
&& [[instance1 committedValuesForKeys:allAttributeKeys] isEqual:[instance2 committedValuesForKeys:allAttributeKeys]]) {
// instance1 "==" instance2
}
Если ответ на любой из вышеуказанных вопросов "да", решение значительно сложнее.
Caveat
Я не уверен, что это хорошая идея. Вероятно, вы захотите переосмыслить свой дизайн, если вам нужно использовать вышеприведенное решение. Есть почти наверняка лучшие способы делать то, что вы пытаетесь сделать, не рискуя запугивать намерения Core Data.