0

我在Core Data中有一个像这样的数据结构......

用户

物品

类别

用户与 Item 实体有一个 toMany 关系“FavouriteItems”。Category 与 Item 实体还有一个 toMany 关系“Items”。

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

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

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

我目前正在通过一种关系(即User.favouriteItems)获取所有项目,然后使用块谓词过滤NSSet。

是否可以使用简单的 CoreData 谓词来做到这一点?

嗯...想想它会像这样的谓词工作...

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

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

那行得通吗?

4

1 回答 1

1

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

如果您正在过滤具有正确反向关系设置的项目数组。

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

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

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

于 2012-07-25T11:28:38.983 回答