如何使用NSFetchedResultsController更改节排序?

时间:2013-07-17 20:02:10

标签: core-data nsfetchedresultscontroller nsfetchrequest nssortdescriptor

我正在使用以下排序描述符设置NSFetchRequest:

[sortDescriptors addObject:[NSSortDescriptor sortDescriptorWithKey:@"color" ascending:YES]];

我将NSFetchedResultsController的sectionNameKeyPath设置为“color”属性。

结果根据颜色分为几个部分,正如我所料。

对于某些对象,“color”属性为空字符串“”是有效的。这些都在第一部分中组合在一起,因为它们在所有其他名称之前排序。但是,我希望它们显示为最后一部分,而不是第一部分,而不影响其余对象的搜索顺序。

例如,目前的部分可能是:

 ""
 "green"
 "red"
 "yellow"

但我希望这些部分符合顺序:

 "green"
 "red"
 "yellow"
 ""

是否有某种方法可以编写排序描述符来获取此行为?我自己无法想出任何东西。

1 个答案:

答案 0 :(得分:2)

(基于SQLite)Core Data获取请求的排序描述符只能使用一些标准比较器方法,并且只能使用存储在数据库中的(持久)属性。要得到 如果是非标准订单,您必须向实体添加其他属性 用它来分类。