我试图在一个ViewController中监视一个文章对象。根据我的研究,有几种方法可以实现这一目标,但我不确定哪种方法最合适:
1,让ViewController(或存储库或viewModel,如果我们谈论的是干净的体系结构)成为观察者,以在保存核心数据时监听通知。
2,在我的Core Data抽象层中,为调用save()
时添加一个完成块回调。
3,使用NSFetchedResultsController。我知道这是为UITableView和UICollectionView设计的,但是我已经看到人们使用它只是为了进行监视。
在这3条路径中,我倾向于第3条,但是我不确定100%是否是最佳做法,因为大多数人在UITableView或UICollectionView上以1比1的比例使用它。
答案 0 :(得分:1)
如果您想观察对象何时更改,则1和2不一定会为您提供帮助。
您可以执行3-NSManagedObjectContextObjectsDidChange
非常强大-但您也可以执行userInfo
内部执行的相同操作,而且可能更简单:
您可以注册为NSUpdatedObjectsKey
的观察员。
在确定了此类更改的副作用之后,如果进行了更改,则在运行循环中每过一次发布一次。因此,如果预期会有很多更改,则可以安全使用-您只会收到一次通知-双端关系将保持一致。
它具有丰富的NSRefreshedObjectsKey
字典。您的任务可以很简单:检查对象的userInfo的NSDeletedObjectsKey
和NSInvalidatedObjectsKey
,如果存在,则刷新视图。然后也检查formOptions.myData
和{{1}},如果您的对象在那里,则关闭视图控制器或将其返回到“空”状态。