核心数据对象foo
与另一个核心数据对象“bar”具有多对多关系。此bar
的属性barid
类型为int32
。
我有一个由NSNumbers代表的NSArray(我们将它命名为intlist
)。
我有一个foo
对象。
我需要知道与此bar
个实例相关的foo
个对象有多少barid
包含在intlist
中。
我想我可以使用谓词。但是我的谓词应该采用什么格式?在SQL中它将是SELECT count(*) FROM fooBarLinkTable WHERE fooid = x AND barid IN intlist
,但我不知道如何将该语句转换为谓词。
答案 0 :(得分:6)
我相信你有一个反向关系栏< - > foo,而intlist
是NSArray的类型或NSNumber对象的NSSet。如果是,那么请执行以下操作:
NSFetchRequest* request = [NSFetchRequest fetchRequestWithEntityName:@"bar"];
[request setPredicate:[NSPredicate predicateWithFormat:@"barid IN %@ && ANY relationshipToFoos == %@", intlist, foo]];
NSError* error = nil;
NSUInteger count = [[self.fetchedResultsController managedObjectContext] countForFetchRequest:request error:&error];