是否可以在不执行新的获取请求的情况下使用新的排序描述符对 NSFetchedResultsController 的结果进行重新排序?

Is it possible to reorder the results of a NSFetchedResultsController with a new sort descriptor without performing a new fetch request?

我正在学习 Core Data。在我的应用程序中,我有一个表视图,它基于分段控件按字母顺序或评级显示评论。那么假设分段控件最初是按字母顺序排列的,结果又回来了。接下来,用户点击评分。我已经在 fetchedresultscontroller 中获得了我需要的所有评论;我只需要重新排序它们。有没有办法告诉 fetchedresultscontroller 根据我给它的新排序描述符(评级)重新排序它的结果,或者我只需要做一个新的 fetch?

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

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

你绝对应该重新获取。

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

即使数据已经全部存在,维护一个单独的数组,或者通过修改数据源方法以反映排序逻辑来加载更复杂的控制器也会更糟糕。排序逻辑属于抓取结果控制器。

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