FetchedResultsController排序问题

时间:2013-05-14 10:20:29

标签: ios nsfetchedresultscontroller nssortdescriptor

我有一个NSFetchResultsController,用一个NSSortDescriptor初始化,根据localizedCaseInsensitiveCompare:方法进行排序。

实体按其姓氏排序,但有些实体没有指定其姓氏,因此,char 170(以ASCII格式)设置为姓氏(不要问我为什么,源代码是这样做,我宁愿不改变它)。排序后,这些“无姓”的人显示在表格视图的顶部。我希望他们能够走到尽头。

似乎在我的情况下不可能使用特定的NSSortDescriptor(我正在使用FRC),我有什么选择?

[编辑] 比较器块或自定义比较器方法不适用于NSFetchResultsController

1 个答案:

答案 0 :(得分:0)

您的选项有限,因为排序描述符需要能够与SQLite数据存储一起使用。

您应该编辑数据模型,以便拥有可以排序的属性。究竟如何计算值取决于您,但属性不能是临时的。我会建议你:

  1. willSave子类中实施NSManagedObject以创建/更新排序数据
  2. 或者,使您的排序数据成为依赖关键字(使用KVO,再次在您的NSManagedObject子类中)
  3. 您的排序数据可能非常简单:

    self.sortValue = (self.lastName == 170 in ASCII ? @"ZZZZZZZZZZZZZZZ" : lastName)