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]];