Objective c 如何构建引用关系中实体的谓词?
我需要做一个谓词,一个实体与另一个实体有关系,一个实体与另一个实体有关系。这可能吗?我拥有以下实体:Objective c 如何构建引用关系中实体的谓词?,objective-c,cocoa,core-data,nspredicate,Objective C,Cocoa,Core Data,Nspredicate,我需要做一个谓词,一个实体与另一个实体有关系,一个实体与另一个实体有关系。这可能吗?我拥有以下实体: Entity: BOOK Entity: AUTOR Entity: SCHOOL 这些关系: BOOK -> relationAutor <- AUTOR AUTOR -> relationSchool <- SCHOOL SCHOOL -> attribute "country" 但是我的代码崩溃了: Terminating app due to uncau
Entity: BOOK
Entity: AUTOR
Entity: SCHOOL
这些关系:
BOOK -> relationAutor <- AUTOR
AUTOR -> relationSchool <- SCHOOL
SCHOOL -> attribute "country"
但是我的代码崩溃了:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'unimplemented SQL generation for predicate : (relationAutor.relationSchool.country IN {France})'
我想做的事可能吗?如果是,我将如何构建这样一个谓词?不能通过字符串连接来组合谓词。如果您需要一个谓词是2个(或更多)其他谓词的“AND”组合,请使用
NSCompoundPredicate
,例如
NSArray *countries = @[@"France"];
NSPredicate *pred1 = [NSPredicate predicateWithFormat:@"relationAutor.relationSchool.country IN %@", countries];
NSPredicate *pred2 = ... // other predicate
// pred = pred1 AND pred2:
NSPredicate *pred = [NSCompoundPredicate andPredicateWithSubpredicates:@[pred1, pred2]];
另请参见谓词格式的文档:
此方法返回的字符串不保证与相同
用于使用predicateWithFormat:etc创建谓词的字符串。
您不能使用此方法创建
可用于重新创建原始谓词的谓词
实际上,我正在组合另一个谓词,一切都很好。我的另一个谓词是简单的,只有一个关系,但是有了这个谓词,有两个关系,代码crash@user1600801:您的代码崩溃了还是我建议的代码崩溃了?-我已经用更多的信息更新了我的答案。如果您向完整的代码展示如何创建和组合谓词,则更容易提供帮助。
NSArray *countries = @[@"France"];
NSPredicate *pred1 = [NSPredicate predicateWithFormat:@"relationAutor.relationSchool.country IN %@", countries];
NSPredicate *pred2 = ... // other predicate
// pred = pred1 AND pred2:
NSPredicate *pred = [NSCompoundPredicate andPredicateWithSubpredicates:@[pred1, pred2]];