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