是否可以使用新的排序描述符重新排序NSFetchedResultsController的结果而不执行新的获取请求?

时间:2015-04-12 06:10:50

标签: ios core-data nsfetchedresultscontroller

我刚学习核心数据。在我的应用程序中,我有一个tableview,根据分段控件,按字母顺序或按评级显示评论。因此,让我们说分段控件最初按字母顺序排列,结果又回来了。接下来,用户点击评分。我已经在fetchedresultscontroller中获得了我需要的所有评论;我只需要重新排序它们。有没有办法告诉fetchedresultscontroller根据我给它的新排序描述符(评级)重新排序其结果,或者我只需要进行新的获取?

我担心的是,执行新的提取会在性能方面更糟,而不仅仅是重新排序已经获取的结果。我只是想看看这是否可能。

2 个答案:

答案 0 :(得分:0)

你绝对应该重新获取。

首先,在更新您的对象之后,无论如何都会去商店旅行以记录评级信息。获取是对此的最小补充。

即使数据已经存在,要么维护单独的数组,要么通过修改数据源方法以反映排序逻辑来加载控制器的复杂性会更糟。排序逻辑属于获取的结果控制器。

请记住,NSFetchedResultsController会优化表格视图中的显示。期望它只获取显示屏幕上可见内容所需的绝对最小值。您不必担心性能问题。我有100K +记录的这种设置没有任何明显的性能问题。

答案 1 :(得分:-1)

只需对_fetchedResultsController.fetchedObjects(这是一个NSArray)进行排序,然后重新加载表