代码之家  ›  专栏  ›  技术社区  ›  Tony Lin

当核心数据中的实体更新(保存时)时,获得通知的最佳方式是什么?

  •  1
  • Tony Lin  · 技术社区  · 7 年前

    有一个article对象,我正试图在一个ViewController中监视它。根据我的研究,有几种方法可以实现这一点,但我不确定哪种方法最合适:

    1、让ViewController(如果我们谈论的是干净的体系结构,那么是repository或viewModel)作为观察者,在核心数据保存时侦听通知。

    2、在我的核心数据抽象层中,为when添加一个完成块回调 save()

    3、使用NSFetchedResultsController。我知道这是专为UITableView和UICollectionView设计的,但我见过有人用它来监视。

    在这三条路径中,我倾向于第三条路径,但我不能100%确定这是否是最佳实践,因为大多数人在UITableView或UICollectionView上使用1比1。

    1 回复  |  直到 7 年前
        1
  •  1
  •   rgeorge    7 年前

    ,1和2不一定对您有帮助。

    NSFetchedResultsController 是内部的,可能更简单:

    你可以注册成为 NSManagedObjectContextObjectsDidChange

    如果已经做了更改,在解决了这些更改的副作用之后,每次通过run循环发布一次。因此,如果预期会有许多更改,那么使用它是安全的——您只会收到一次通知——而且双端关系将是一致的。

    它有一个丰富的 userInfo 字典。你的任务可以很简单:检查用户信息的 NSUpdatedObjectsKey NSRefreshedObjectsKey NSDeletedObjectsKey NSInvalidatedObjectsKey