来自核心数据多对多关系的随机实体

Posted

技术标签:

【中文标题】来自核心数据多对多关系的随机实体【英文标题】:Random entities from Core Data to-many relationship 【发布时间】:2011-06-25 15:03:30 【问题描述】:

我正在尝试设置这样的核心数据模型: 用户->好友->相册->图片 (减去用户,每一个都是一对多的关系)

我需要有随机选择X张图片的能力;最好,我想避免不得不随机选择几个朋友,然后从那几张专辑中,最后是几张图片 - 我的核心数据谓词经验非常有限,因此非常感谢任何帮助!

【问题讨论】:

【参考方案1】:

据我所知,没有办法在NSFetchRequest 中进行“随机排序”。不过,这似乎是一个不错的主意,因此您可能想要ask for it。

您可以获得的关闭是不为谓词指定任何排序描述符并设置获取限制。如果没有排序描述符,返回的对象将以某种可能不可预测的顺序出现。

【讨论】:

是的,我想我会使用 setFetchLimit 并获取一组对象。然而,我的主要问题是如何设置 NSPredicate 以直接从图片中提取对象。我不想拉X个朋友,然后从那些拉X个相册,最后拉X个图片。我相信答案是使用 SUBQUERY,但我不确定在一对多关系中深入了解的最佳方法。我考虑将图片实体更改为包含与“用户”的关系,然后只要求 X 数量的图片,但核心数据抱怨没有与该关系相反【参考方案2】:

嗯,我自己对此不太确定,但你不能用以下功能做点什么:

NSSet *myFetchedPictures;
[myFetchedPictures anyObject];

可能在循环中(不要忘记从NSSet 中删除您使用的对象,否则您可能会再次得到相同的对象)。

我自己对 CoreData 很陌生,所以如果这完全错误,请告诉我 :)

【讨论】:

以上是关于来自核心数据多对多关系的随机实体的主要内容,如果未能解决你的问题,请参考以下文章

多对多关系核心数据

多对多的核心数据迁移

核心数据:与状态的多对多关系

多对多关系实体框架核心db优先

核心数据:获取特定对象的多对多关系中的所有实体?

预加载具有多对多关系的核心数据的最佳实践