我有一个NSFetchResultsController,用一个NSSortDescriptor初始化,根据localizedCaseInsensitiveCompare:
方法进行排序。
实体按其姓氏排序,但有些实体没有指定其姓氏,因此,char 170(以ASCII格式)设置为姓氏(不要问我为什么,源代码是这样做,我宁愿不改变它)。排序后,这些“无姓”的人显示在表格视图的顶部。我希望他们能够走到尽头。
似乎在我的情况下不可能使用特定的NSSortDescriptor(我正在使用FRC),我有什么选择?
[编辑] 比较器块或自定义比较器方法不适用于NSFetchResultsController
答案 0 :(得分:0)
您的选项有限,因为排序描述符需要能够与SQLite数据存储一起使用。
您应该编辑数据模型,以便拥有可以排序的属性。究竟如何计算值取决于您,但属性不能是临时的。我会建议你:
willSave
子类中实施NSManagedObject
以创建/更新排序数据KVO
,再次在您的NSManagedObject
子类中)您的排序数据可能非常简单:
self.sortValue = (self.lastName == 170 in ASCII ? @"ZZZZZZZZZZZZZZZ" : lastName)