2

设置

有一个核心数据对象foo 与另一个核心数据对象“条”具有多对多关系。这bar具有baridtype的属性int32

我有一个由 NSNumbers 表示的整数的 NSArray(让我们命名它intlist)。我有一个foo对象。

问题

我需要知道有多少bar与此foo实例相关的对象barid包含在intlist.

我想我可以为此使用谓词。但是我的谓词应该有什么格式?在 SQL 中它会是SELECT count(*) FROM fooBarLinkTable WHERE fooid = x AND barid IN intlist,但我不知道如何将该语句转换为谓词。

4

1 回答 1

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];
于 2013-04-11T08:39:44.617 回答