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
サブタイプが表示されることを願っています。