我有一个我精心设计的块谓词,只是发现你不能在 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
是在获取请求中评估的类型。我希望它会看到子类型。