1

比方说,我有一个核心数据存储中的Person实体。我有由NSFetchedResultsController显示每Person实体填充的UITableView。当然,Person实体具有name属性,该属性是可选的。我们想按字母顺序显示列表,A-Z。看到这个的用户首先想看看有名人物,因为那些人​​会更关心他们。因此,控制器在其初始化程序中采用的排序描述符必须首先显示具有非空名称的实体,然后显示空名称Person一个排序结果中取出控制器,空字符串最后

我的选择是有限的。我只允许使用在NSString上提供的某些比较器,但这些比较器都不符合我的标准。我无法对瞬态值进行排序。我试过使用零宽度的空白作为默认值,但核心数据显然修剪掉空白。思考?

回答

1

在fetchedResultsController的部分并不需要对应一到一个与你在你的tableview显示部分。现在你有类似(空),A,B,C,D等部分。但是,您可以更改视图控制器选择显示部分的方式。在tableview中设置第0部分,查看fetchedResultsController中的第1部分和1-> 2,2-> 3 ...直到最后一部分(无名部分)指向部分0.

这并不复杂但它可能会增加你的代码。所以我建议创建一个单独的对象来处理将fetchedResultsController indexPaths和节转换为你的tableview的indexPaths和节。 (还要确保处理没有“无名字”部分的情况,以及只有“无名字”部分的情况)。

如果这看起来太复杂,一个简单的解决方案将是添加的hasName和排序由第一个属性。让此人的名字自定义设置器,它也将设置hasName属性,所以你可以很容易地保持这种特性同步。

+0

我只在一个部分显示名称,但'hasName'建议听起来像是可以工作的。 –

相关问题