CoreDataエンティティでのオブジェクトの比較がどのように行われるのだろうか。 多対多の関係を持つ2つのエンティティがあるとします。今、私はすべてのEntityBは、エンティティAを渡して取得したいCoreDataのオブジェクト作成と比較の理解
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"prop1=%@",x];
EntityA *entityA = //execute fetch
:
EntityA {
prop1
entityB <-- to-many relationship
}
EntityB {
.... properties
entityA <-- one-to-one relationship
}
私はのは一つだけエンティティAは、このような基準を満たすが言わせて簡単にするために、NSPredicateと一定のPROP1を持つエンティティを取得したいと仮定すると基準として:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"EntityA=%@",entityA];
EntityB *entityB = //execute fetch
EntityA *parentA = entityB.entityA;
この時点では再どうなるか、私は任意のメソッドをオーバーライドしませんでしたが、エンティティAとEntityBがちょうどNSManagedObjectを拡張することを考慮すると、この声明のsult?
if(entityA==parentA) NSLog(@"YES");
else NSLog("NO");
「はい」の場合、なぜそのような結果が得られますか?私は同じ実行でいくつのオブジェクトを持っていますか?たとえば、私がJavaで知っている永続化レイヤーを使用すると、2つの異なるオブジェクトが生成され、関連するクラスのequalsメソッドをオーバーライドしてそこにロジックを実装すると、比較は「YES」になります。
このケースでは、CoreDataが何らかのオブジェクトのキャッシュと再利用を行っているのだろうかと思います。 entityB点場合
おかげでのObjective-C ==
において