Core Data で使用できないことを発見するためだけに慎重に作成したブロック述語があります。
NSPredicate *rootContactPredicate = [NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) {
BOOL isPersonAndRoot = ([[[evaluatedObject entity] name] isEqualToString:@"Person"] && [[(Person*)evaluatedObject accounts] count] == 0);
BOOL isAccountAndRoot = ([[[evaluatedObject entity] name] isEqualToString:@"Account"] && [(Account*)evaluatedObject root] == nil);
return isPersonAndRoot || isAccountAndRoot;
}];
したがって、これを標準の文字列形式の述語に変換する必要がありますが、評価されたオブジェクトのエンティティ タイプを確認する方法がわかりません。Personおよびエンティティは、フェッチ要求で評価される型であるエンティティのAccountサブクラスです。Contactサブタイプが表示されることを願っています。