我在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];
然后对项目实体运行获取请求?
那会有用吗?
答案 0 :(得分:1)
拍摄非常盲目,因为这是一个尴尬的场景,只是为了回答一个问题,但也许
如果要过滤设置了正确反向关系的Items数组。
[NSPredicate predicateWithFormat:@"%@ IN interestedUsers AND %@ IN categories",
someUser,
someCategory];
基本上Item
有很多用户(interestedUsers
),所以我们说的是这个集合中的用户。
同样地,Item
有很多类别(categories
),所以我们说AND
是我们在此集合中选择的类别。