iOS 使用关系检索和排序 Core Data 实体

Posted

技术标签:

【中文标题】iOS 使用关系检索和排序 Core Data 实体【英文标题】:iOS retrieving and ordering Core Data entities with relationships 【发布时间】:2014-02-23 21:03:40 【问题描述】:

我最近向this question 询问了如何最好地检索并在表格视图中显示我的 FRC 用于节标题的标题。

根据@Mike Pollard 在我的问题的第二个答案中建议的一系列研究,我遇到了this question,并立即被与我的情况的相似性以及@aroth 发布的第四个答案所震惊。

Aroth 的方法看起来确实不错,而且我创建了一个新的 Category 实体。具体来说,Category 和 Item 是一对多的关系,而 Item 和 Category 是一对一的关系。但是,我无法理解他提出的解决方案中隐含的一个方面,更根本的是,在这种关系中:

在我的例子中,Category(s) 和 Item(s)——“Item”在我的例子中被称为“ListActivity”,但“Item”将用于说明目的——将通过两个相应的用户输入命名字段,这似乎会导致类别列表中出现多个同名条目。

我的问题:

如何确保在获取类别列表时获得每个类别的单个实例,即表格视图中的每行一个类别,没有重复? Core Data 是否会通过关系自动将每个新传入的项目分配给适当类别的单个实例?或者它会在接收到获取请求时以某种方式测试并将列表筛选到每个类别名称一个条目?还是必须使用 fetch 请求中的谓词进行过滤?

谢谢!

【问题讨论】:

【参考方案1】:

Core Data 会按照您的指示去做。这听起来像是与您在数据存储中创建内容有关的问题,而不是 FRC 和表视图的问题。您有责任搜索和重用现有对象,而不是创建重复项并将它们添加到存储中 - 实际上,只有您(您的代码)知道什么构成重复项。

因此,基本上,当您创建新项目时,使用获取请求和谓词来查找合适的现有类别(或根据部分输入的名称建议类别)。然后,连接到现有类别或创建一个新类别。

【讨论】:

谢谢!评估我需要对数据源方法进行的更改。

以上是关于iOS 使用关系检索和排序 Core Data 实体的主要内容,如果未能解决你的问题,请参考以下文章

Core Data 中的排序顺序具有多重关系

iPhone Core Data 关系故障

Core Data 根据是不是存在关系对描述符进行排序?

IOS/Core-Data:添加多对多关系

如何在 Core Data 中设置一对多关系的排序?

遍历 iOS Core Data 关系