在 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 中为获取的属性设置限制的主要内容,如果未能解决你的问题,请参考以下文章

在 Core Data 中为实体添加属性

如何在 EF Core 5 中为自定义 SQL 配置导航属性

在 Core Data 中获取具有关系的实体

使用 Core Data 在 SwiftUI ForEach 中为 Data.Element 键入未知数

如何获取 Core Data 中的关系项属性?

Core Data - 批量处理获取结果的属性