使用NSPredicate按属性筛选Core Data关系NSSet

3

我有两个实体之间的多对多关系。一个是Person,另一个是Clubs。我想编写一个谓词,找出所有在特定Club中的Person实体。我还想检查该人的position属性。

以下是不起作用的内容:

NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:@"Person" inManagedObjectContext:self.managedObjectContext]];
[request setPredicate:[NSPredicate predicateWithFormat:@"position CONTAINS[cd] %@ AND IN %@", @"manager", self.clubs.people]];
NSArray *results = [self.managedObjectContext executeFetchRequest:request error:nil];

这个错误提示如下:

由于未捕获的异常 'NSInvalidArgumentException',应用程序终止,原因是:无法解析格式字符串"title CONTAINS[cd] %@ AND IN %@"

我知道我在这里做错了什么,需要帮助吗?


1
尝试使用SELF来引用Person对象本身,而不是属性:[NSPredicate predicateWithFormat:@"position CONTAINS[cd] %@ AND SELF IN %@", @"manager", self.clubs.people] - pbasdf
1个回答

2

正如@pbasdf所指出的那样,你应该使用self。不过,查询语句如果先使用self子句将更加高效,即:

[NSPredicate predicateWithFormat:@"SELF IN %@ AND position CONTAINS[cd] %@", self.clubs.people, @"manager"];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接