0

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

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

似乎在我的情况下无法使用特定的 NSSortDescriptor(我使用的是 FRC),我在这里有什么选择?

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

4

1 回答 1

0

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

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

  1. willSave在您的子类中实现NSManagedObject以创建/更新排序数据
  2. 或者,使您的排序数据成为依赖键(KVO在您的子类中再次使用 , NSManagedObject

您的排序数据可能很简单:

self.sortValue = (self.lastName == 170 in ASCII ? @"ZZZZZZZZZZZZZZZ" : lastName)
于 2013-05-14T10:33:05.290 回答