MVVM CoreData FetchedReusltsController

时间:2016-06-10 11:32:23

标签: objective-c mvvm nsfetchedresultscontroller

我正在尝试将MVVMObjective-c一起使用,但我在CoreData时遇到了一些问题。我不知道谁应该处理fetchedResultsControllerDelegate方法。 viewModelviewController

我认为viewModel应该处理它,但我看到太多的代码要做同样的事情。

1 个答案:

答案 0 :(得分:3)

我们假设您在视图中有一个编辑按钮。当fetchResultsController中没有对象并且您想要在添加任何对象时显示它时,隐藏编辑按钮。

如果在viewController中实现NSFetchedResultsControllerDelegate

  • ViewController获取有关模型更改的通知
  • ViewController必须通知ViewModel发生了什么事 模特
  • ViewModel必须更改editButtonShown的值 属性
  • ViewModel必须通知viewController更新 图

如果您在viewModel中实现NSFetchedResultsControllerDelegate

  • model通知viewModel有关更改
  • viewModel更改editButtonShown 属性并向viewController发送通知

如果你在viewController中实现这些方法,那么它会引用模型,这不应该发生在MVVM中

- (void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type newIndexPath:(NSIndexPath *)newIndexPath

我认为正确的解决方案是在ViewModel中实现NSFetchedResultsControllerDelegate。然后你应该有类似的协议通知viewController更新视图,但它应该与viewModels一起使用,而不是模型