使用Swift 3实现短路(在单个数据上多次)并过滤核心数据的最佳方式是什么?

问题描述:

[核心数据提供NSFetchResultController以帮助UITableView。我想用持续时间,出发时间,到达时间,价格和停靠站数量按升序和降序对数据进行排序。 我通过提供排序描述符来提取请求来排序数据。使用Swift 3实现短路(在单个数据上多次)并过滤核心数据的最佳方式是什么?

我只想知道是为每个排序创建FetchResultController的最佳方式吗?

enter image description here

+0

为什么你没有阅读:https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreData/FetchingObjects.html并使用** NSPredicate ** –

+0

是的我可以用谓词获取数据,但我想要在提取后对数据进行排序(多次),那么我应该使用FetchResultController并为每个排序更改请求或需要为排序创建提取数据的数组。哪一个最好? –

+0

为什么在肥胖后,你应该与查询排序:) –

是的,你应该创建一个新fetchedResultsController每次你需要排序的时间。 fetchedResultsController跟踪更新,删除,插入和移动,因此如果数据在获取后发生更改,fetchedResultsController将告诉您如何更新视图。如果您只是进行抓取并重新计算结果,那么数据可能会过时。更糟糕的是,如果您在删除对象后访问对象,您的应用将崩溃。 fetchedResultsController可以保护您免受这些问题的困扰。

即使对于大型数据集,每次用户希望进行排序时,创建新的fetchedResultsController都没有任何问题。如果你发现你有性能问题,那么你应该处理它,而不是预先优化。

+0

取回数据后永不改变。在相同的数据上完成排序。 @jon Rose –

+0

我仍然会推荐使用fetchedResultsController。应用程序往往会随着时间的推移而变化并变得更复杂设置自己崩溃,每当一个对象被删除,当你不期望在我看来是一个坏主意。 –

+0

谢谢@ Jon Rose –