核心数据交叉引用两个关系
Posted
技术标签:
【中文标题】核心数据交叉引用两个关系【英文标题】:Core data cross referencing two relationships 【发布时间】:2012-07-25 10:53:47 【问题描述】:我在 Core Data 中有一个像这样的数据结构......
用户
物品
类别
用户与 Item 实体有一个 toMany 关系“FavouriteItems”。 Category 与 Item 实体还有一个 toMany 关系“Items”。
用户可以从他们想要的任何类别中选择最喜欢的项目。目前我正在列出所有项目,然后在旁边显示类别。
我想做的是显示所选类别的所有用户最喜欢的项目。
即选择与类别 x 和用户 y 有关系的所有项目。
我目前正在通过一种关系(即 User.favouriteItems)获取所有项目,然后使用块谓词过滤 NSSet。
是否可以使用简单的 CoreData 谓词来做到这一点?
嗯...想一想会是这样的谓词...
[NSPredicate predicateWithFormat:@"interestedUser.id = %@ AND category.id = %@", user.id, category.id];
然后在 item 实体上运行 fetch 请求?
这行得通吗?
【问题讨论】:
快速更新。它不喜欢谓词中使用的多对多关系。 【参考方案1】:拍摄相当盲目,因为这是一个尴尬的场景,只是为了回答一个问题,但也许
如果您要过滤一组具有正确反向关系的项。
[NSPredicate predicateWithFormat:@"%@ IN interestedUsers AND %@ IN categories",
someUser,
someCategory];
基本上Item
有很多用户 (interestedUsers
),所以我们说的是我们在这个集合中的用户。
同样,Item
有很多类别 (categories
),所以我们说 AND
是我们在此集合中选择的类别。
【讨论】:
谢谢!一改就完美了。只有interestedUsers 是多对多的,类别是一对多的(即每个项目只有一个类别)。现在我知道了我可以创建谓词的 IN。谢谢!以上是关于核心数据交叉引用两个关系的主要内容,如果未能解决你的问题,请参考以下文章