距离组NSFetchedResultsController部分

时间:2011-07-22 19:06:21

标签: objective-c ios uitableview core-data

我正在使用Core Data进行tableview。我的数据按您当前位置的距离排序。我想要的是为5,10和20英里的物品准备一个新的部分。

我的距离值作为NSInteger存储在数据存储中,我在对象模型中使用NSNumber将其取出。

我已经做了一些搜索,发现我需要使用sectionNameKeyPath属性来制作数据。

我的问题是我不知道分组数据的最佳方法。在我的搜索过程中,我遇到了一个瞬态属性或使用NSNumber类别来确定项目应该在哪个部分。

这些方法中的任何一种都是获得最终结果的最佳方式吗?如果是这样,任何人都可以提供有关如何实施它的任何细节吗?

感谢。

2 个答案:

答案 0 :(得分:1)

您应该向对象添加派生属性(在模型中不是严格要求的),我们将其命名为range。我将它设为只读属性,您可以缓存该值。

当它为0-5时,返回5,5.x - 10返回10等等

然后将range设为sectionNameKeyPath

答案 1 :(得分:0)

如果您需要高度自定义的部分行为,则需要子类化NSFetchedResultsController以提供所需的行为。有关详细信息,请参阅NSFetchedResultsController类文档。

在这种情况下你需要继承子类,因为你不是看一个有序的属性,比如字符串属性的按字母顺序排列的第一个字母,而是每个属性所属的范围。

这是一个比更改数据模型更简洁的解决方案,因为您可以使用它在许多不同的表视图中以多种不同方式显示数据,而不必混淆数据模型。