按两个依赖属性对核心数据实体进行排序

Posted

技术标签:

【中文标题】按两个依赖属性对核心数据实体进行排序【英文标题】:Sorting Core Data entities by two dependent attributes 【发布时间】:2012-02-23 11:01:09 【问题描述】:

假设我有一个具有两个 NSNumber 属性的核心数据实体:value1value2

我想构造一个NSFetchedResultsController,这样我就可以在表格视图中显示我的属性。表格视图应按totalValue 排序,女巫通过将value1value2 相加计算得出。

totalValue = [NSNumber numberWithInt:([value1 intValue] + [value2 intValue])];

totalValue 未存储在数据库中,因为它很容易从value1value2 派生而来。

我可以通过两个独立的属性对NSFetchedResultsController 进行排序,但是如何使用两个依赖属性对它进行排序,例如按totalValue 排序,value1value2 的组合?

我可以将NSManagedObject 子类化,但我可以创建一个NSSortDescriptor 以便它对我的子类NSManagedObject 中的方法进行排序吗?

我知道我可以轻松地将totalValue 存储在数据库中,但是如果我想根据与用户位置的距离对位置进行排序怎么办?比存储距离不是一种选择。

【问题讨论】:

【参考方案1】:

您可以轻松地将总值声明为对象中的一种方法。您还可以使用瞬态值,这意味着在数据库中找不到该值。 然后你只需创建一个排序描述符。

使用很简单,排序用了很多

【讨论】:

【参考方案2】:

如果我是你,我将为我的实体添加 totalValue 作为新属性,这样你的实体就可以按 value1 和/或 value2 和/或 totalValue 排序。

【讨论】:

以上是关于按两个依赖属性对核心数据实体进行排序的主要内容,如果未能解决你的问题,请参考以下文章

核心数据:按实体属性对实体进行分组

根据核心数据中的属性对实体中的行进行排序

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

在 Objective-C 中按评论数量对核心数据中的 FetchedObjects 数组进行排序

核心数据:按关系属性排序

按多个键值对数据进行排序