NSPredicate查询中的位置

Arp*_*rum 2 core-data nspredicate ios

设置

有一个核心数据对象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,但我不知道如何将该语句转换为谓词.

Mar*_*ski 6

我相信你有一个反向关系bar < - > 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];
Run Code Online (Sandbox Code Playgroud)