在 Core Data 中为获取的属性设置限制
Posted
技术标签:
【中文标题】在 Core Data 中为获取的属性设置限制【英文标题】:Setting a limit to a fetched property in Core Data 【发布时间】:2010-01-25 10:50:54 【问题描述】:我在两个对象之间有一对多的关系,我们称它们为 Gallery 和 Images。 每个图像属于一个画廊,每个画廊都有许多图像。
我想向我的 Gallery 模型添加一个 fetched 属性,该属性将返回一个且仅一个 Image 对象。
有没有办法通过获取的属性来做到这一点?
【问题讨论】:
【参考方案1】:对于获取的属性,谓词是您唯一的选择。
请参阅谓词编程指南 - Aggregate Operations 部分。你会想要使用array[FIRST]
。
请注意,您可能每次都会得到不同的图像,因为 Core Data 中不支持有序集。您通常可以通过在“sortOrder”键中维护图像的排序顺序并在获取时设置排序描述符来解决此问题,但我认为不可能在获取的属性上提供排序描述符。
Lion 更新: 在 10.7 及更高版本的 Core Data 中添加了对有序集的支持,使得针对 10.7 及更高版本的应用不需要额外的“sortOrder”属性.
【讨论】:
【参考方案2】:获取的属性由NSFetchedPropertyDescription
类表示。在实际使用托管对象模型之前,您可以修改代码中的属性。因此,在加载托管对象模型的代码中,您可以找到获取的属性描述,并将获取请求替换为更符合您要执行的操作的内容。您应该可以通过这种方式对其设置获取限制。
【讨论】:
以上是关于在 Core Data 中为获取的属性设置限制的主要内容,如果未能解决你的问题,请参考以下文章
如何在 EF Core 5 中为自定义 SQL 配置导航属性