首页 文章

MVC与NSFetchedResultsController

提问于
浏览
1

这里有点新闻,关于架构的一般问题 .

我有一个iOS应用程序,它有两个独立的视图,它们都在使用相同的核心数据模型 .

我已经为其中一个视图实现了NSFetchedResultsController作为本地属性 . 很多代表方法实现......

  • (void)controllerWillChangeContent:(NSFetchedResultsController *)控制器

  • (void)controller:(NSFetchedResultsController *)controller didChangeSection:(id)sectionInfo atIndex:(NSUInteger)sectionIndex forChangeType:(NSFetchedResultsChangeType)type

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

  • (void)controllerDidChangeContent:(NSFetchedResultsController *)控制器

  • (NSFetchedResultsController *)fetchedResultsController

...其中大部分是样板文件,但我想避免将这些复制/粘贴到另一个视图中 .

有关重新架构的任何建议,以避免这种异端......?

1 回答

  • 0

    首先,当你提到观点时,我希望你的意思是"view controllers" . 将此代码放入 UIView 子类将是非常糟糕的设计 . 它's controller code, so don' t把它放在一个视图中 .

    至于限制复制,您使用的是面向对象的语言,因此有一种可能性是使这两个视图控制器都从公共父类继承 . 将重复的代码移动到父级,并让每个视图控制器调用 super 's implementation before doing whatever their own implementation requires. That will probably require some care to make sure that the superclass'的实现对于它的两个子类都是通用的 . 如果这证明非常困难,可能是代码不够通用,无法重构以提供帮助 .

相关问题