Интересно, как выполняется сравнение объектов на сущностях CoreData.Предположим, у меня есть две сущности с отношением ко многим.
EntityA {
prop1
entityB <-- to-many relationship
}
EntityB {
.... properties
entityA <-- one-to-one relationship
}
Предположим, я хочу получить сущность с определенной проп1 с помощью NSPredicate, для простоты, скажем, есть только одна EntityA, удовлетворяющая таким критериям:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"prop1=%@",x];
EntityA *entityA = //execute fetch
Теперь я хочу получить все объекты EntityB, передающие entityA, в качестве критериев:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"EntityA=%@",entityA];
EntityB *entityB = //execute fetch
EntityA *parentA = entityB.entityA;
На данный момент, учитывая, что я не переопределил ни один метод, но EntityA и EntityB просто расширяют NSManagedObject,что будет результатом этого заявления?
if(entityA==parentA) NSLog(@"YES");
else NSLog("NO");
В случае «ДА», почему такой результат?А сколько объектов у меня в одном исполнении?Например, использование любого уровня персистентности, о котором я знаю в Java, приведет к двум отдельным объектам, и сравнение будет «ДА», только если я переопределю метод equals соответствующих классов и реализую в нем некоторую логику, такую как:
if(objA.getRegistrationNumber()==objA.getRegistrationNumber()) return true;
В этом случае мне интересно, выполняет ли CoreData какое-то кэширование и повторное использование объектов.
спасибо