如何对两个不同的核心数据对象进行排序?

Posted

技术标签:

【中文标题】如何对两个不同的核心数据对象进行排序?【英文标题】:How to sort two different core data objects? 【发布时间】:2016-02-24 20:46:33 【问题描述】:

我有两个核心数据实体。说生日周年纪念

这些实体的属性是,

生日 - 姓名、年龄、出生日期

周年纪念日 - 姓名、周年纪念日

在表格视图中分别显示每个实体可以使用获取的结果控制器来完成。没关系!!但是,我想展示一个结合了生日和周年纪念日的表格视图。排序应该通过从 Birthday 中获取“Birth date”和从 Anniversary 实体中获取“Anniversary date”来完成。

问题

我应该使用两个 fetchedresultscontroller 从这两个实体中获取对象吗?然后我应该对这些对象进行排序吗?这对于最少的对象来说很好,但是当计数增加时会花费更多的处理时间。

我是否应该创建一个拥有“出生日期”和“周年纪念日”值的公共父表?如果是这样,我该如何获取以及如何定义排序描述符?

我对核心数据真的很陌生,对这种情况一无所知。提供示例将不胜感激。

谢谢

【问题讨论】:

【参考方案1】:

最好的办法是使用两个fetchedresultscontrollers,然后将每组结果相互排序,然后将两者合并。这似乎是实现此目标的一种合乎逻辑的方式......另一个想法可能是在生日和周年纪念之间建立一个通用模型,该模型共享尽可能多的属性(IE 名称和日期),然后您的排序描述符可以在模型超类的日期属性。

【讨论】:

【参考方案2】:

添加父实体。周年纪念日和生日都应该继承共同的属性。然后您可以使用一个 frc 来查询周年纪念日和生日。

【讨论】:

以上是关于如何对两个不同的核心数据对象进行排序?的主要内容,如果未能解决你的问题,请参考以下文章

获取数组中对象的值

对复合集合进行排序

使用 NSFetchedResultsController 对核心数据对象进行排序

按 ID 对核心数据进行排序 [重复]

Javascript - 如何按 3 种不同的属性类型对对象数组进行排序? (字符串、整数、布尔值)

如何在不同时间按不同参数对列表进行排序