我正在使用Core Data进行tableview。我的数据按您当前位置的距离排序。我想要的是为5,10和20英里的物品准备一个新的部分。
我的距离值作为NSInteger存储在数据存储中,我在对象模型中使用NSNumber将其取出。
我已经做了一些搜索,发现我需要使用sectionNameKeyPath
属性来制作数据。
我的问题是我不知道分组数据的最佳方法。在我的搜索过程中,我遇到了一个瞬态属性或使用NSNumber类别来确定项目应该在哪个部分。
这些方法中的任何一种都是获得最终结果的最佳方式吗?如果是这样,任何人都可以提供有关如何实施它的任何细节吗?
感谢。
答案 0 :(得分:1)
您应该向对象添加派生属性(在模型中不是严格要求的),我们将其命名为range
。我将它设为只读属性,您可以缓存该值。
当它为0-5时,返回5,5.x - 10返回10等等
然后将range
设为sectionNameKeyPath
。
答案 1 :(得分:0)
如果您需要高度自定义的部分行为,则需要子类化NSFetchedResultsController以提供所需的行为。有关详细信息,请参阅NSFetchedResultsController类文档。
在这种情况下你需要继承子类,因为你不是看一个有序的属性,比如字符串属性的按字母顺序排列的第一个字母,而是每个属性所属的范围。
这是一个比更改数据模型更简洁的解决方案,因为您可以使用它在许多不同的表视图中以多种不同方式显示数据,而不必混淆数据模型。