在 UIViewController 之间传递 NSFetchedResultsController

Passing NSFetchedResultsController between UIViewControllers

我有 3 个不同的视图控制器,它们呈现相同的数据。基本上都是一个接一个呈现。他们呈现的是使用 NSFetchedResultsController.

获取的相同实体

我现在正在考虑,因为它们是相同的 NSFetchedResultsControllers,我是否应该只优化并创建一个在控制器之间传递的东西?这有什么缺点吗,或者更好的做法是什么?

另外,仅传递数据集是不够的,因为我希望控制器对数据库的更改做出反应。

should I just optimize things and create one, that I pass between controllers?

是的,尽量减少对每个 VC 的初始化执行类似 fetchRequest 的开销是一个很好的做法。
比在 VC 之间传递 NSFetchedResultsControllers 对象更好的替代方法是 -

  • 将所有 FetchedResultsControllers 初始化和委托函数实现完全抽象为助手 class 命名为:
    @interface CoreDataHelper: NSObject < NSFetchedResultsControllerDelegate >

  • 你需要 re-wiring 的 delegate 听众 & 选择适当的时间 allocating & 如果需要(不是必需的) deallocating CoreDataHelper 实例

  • 单例 CoreDataHelper 足以处理所有核心数据交互。

Model 交互与 View 组件隔离并独立于这些组件可以创建 loosely-coupled 模块,使它们可重用且简洁。