我正在尝试将MVVM
与Objective-c
一起使用,但我在CoreData
时遇到了一些问题。我不知道谁应该处理fetchedResultsControllerDelegate
方法。 viewModel
或viewController
?
我认为viewModel应该处理它,但我看到太多的代码要做同样的事情。
答案 0 :(得分:3)
我们假设您在视图中有一个编辑按钮。当fetchResultsController中没有对象并且您想要在添加任何对象时显示它时,隐藏编辑按钮。
如果在viewController中实现NSFetchedResultsControllerDelegate
:
如果您在viewModel中实现NSFetchedResultsControllerDelegate
:
如果你在viewController中实现这些方法,那么它会引用模型,这不应该发生在MVVM中
- (void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type newIndexPath:(NSIndexPath *)newIndexPath
我认为正确的解决方案是在ViewModel中实现NSFetchedResultsControllerDelegate
。然后你应该有类似的协议通知viewController更新视图,但它应该与viewModels一起使用,而不是模型