核心数据交叉引用两种关系

时间:2012-07-25 10:53:47

标签: iphone objective-c ios core-data

我在Core Data中有一个数据结构,如此......

用户

项目

分类

用户与Item实体之间存在toMany关系“FavouriteItems”。 类别还与Item实体具有toMany关系“Items”。

用户可以从他们希望的任何类别中选择喜欢的项目。目前我正在列出所有项目,然后在旁边显示类别。

我想要做的是显示所选类别的所有用户的favouriteItems。

即。选择与类别x和用户y有关系的所有项目。

我目前正在通过一个关系(即User.favouriteItems)获取所有Items,然后使用块谓词过滤NSSet来实现此目的。

是否可以使用简单的CoreData谓词来执行此操作?

嗯......想到这件事会像这样的工作......

[NSPredicate predicateWithFormat:@"interestedUser.id = %@ AND category.id = %@", user.id, category.id];

然后对项目实体运行获取请求?

那会有用吗?

1 个答案:

答案 0 :(得分:1)

拍摄非常盲目,因为这是一个尴尬的场景,只是为了回答一个问题,但也许

如果要过滤设置了正确反向关系的Items数组。

[NSPredicate predicateWithFormat:@"%@ IN interestedUsers AND %@ IN categories", 
                                 someUser, 
                                 someCategory];

基本上Item有很多用户(interestedUsers),所以我们说的是这个集合中的用户。

同样地,Item有很多类别(categories),所以我们说AND是我们在此集合中选择的类别。