2017-04-14 107 views
2

我有一个many-to-many与两个实体的关系。一个是Person,另一个是Clubs。我希望能够编写一个predicate,它将查找特定Club中的所有Person实体。我也想检查那个人的position属性。NSPredicate按属性筛选核心数据关系NSSet

这里是不工作:

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

这崩溃,出现错误:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Unable to parse the format string "title CONTAINS[cd] %@ AND IN %@"'

我知道我错在这里做的事情,任何帮助吗?

+1

尝试使用自指Person对象本身,而不是一个属性更高效:'[NSPredicate predicateWithFormat:@“的位置包含:[CD]% @ AND SELF IN%@“,@”manager“,self.clubs.people]' – pbasdf

回答

2

正如@pbasdf上面指出的那样,您应该使用self。但是,查询会更具有自我条款第一即

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

谢谢!这工作! –