访问Core Data中的多对多关系

时间:2011-03-12 20:37:29

标签: objective-c ios core-data

我在我的iPhone应用程序中使用Core Data。

我有两个实体:列表和项目,由多对多关系链接。 List中的关系名称是项目,而Item是列表。

我想从用户选择的列表中获取所有项目。

现在我正在尝试构建一个类似的谓词:

NSPredicate *basePredicate = [NSPredicate predicateWithFormat:@"lists IN %@", listsIds];

listsIds是一个ObjectIDs数组

但是当我运行该程序时,我收到了这个错误:

谓词的未实现SQL生成:(列出IN {0x594ac10})'

知道该怎么做吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

你甚至需要一个谓词吗?

如果用户选择List个对象,那么要找到相关的Item个对象,您只需走List.items个关系。

假设您有一个由用户选择的List对象数组。要获取一组相关的Item对象,只需使用:

NSArray *itemArray=[listArray valueForKey:@"items"];

一旦在关系的一侧有一个对象,就可以找到所有其他对象而无需获取。

答案 1 :(得分:0)

试试这个:

NSPredicate *basePredicate = [NSPredicate predicateWithFormat:
                             @"ALL list.objectID IN %@", listsIds];

不确定您是否需要ALL,所以您也可以尝试:

NSPredicate *basePredicate = [NSPredicate predicateWithFormat:
                             @"list.objectID IN %@", listsIds];