当您有多个执行相似核心数据调用的视图控制器时,在使用核心数据的iPhone应用程序中使用的最佳设计是什么?

当前,我有一个具有多个视图控制器的应用程序,这些视图控制器均执行类似的功能,例如将对象添加到实体,删除实体等。我认为有几种方法可以解决此问题:

  • 每个视图控制器都有自己的addItem:blah类。缺点是这导致类
  • 之间存在一些复制粘贴
  • 创建一个具有核心数据方法的超类,并从该类继承。在必要时覆盖
  • 创建一个类别,以便视图控制器的所有实例都具有那些方法,而无需子类
  • 创建一个可以调用的数据管理器单例。这样做可能很有用,这样我就可以在每个视图控制器之外对请求进行排队并进行数据管理。缺点是,这在一般
  • 中感觉像是个坏主意

    最佳答案

    CoreData和ViewControllers不需要彼此了解。

    在MVC世界中,UIViewController不是传统的Controller。它们与Views更加紧密地结合在一起-我更倾向于考虑这一点来创建它们(大多数Apple示例代码包含很多ModelController代码-可能是为了简化示例)。

    我喜欢创建ModelControllers并让ViewController管理我的视图,并给ViewControllers一个ModelController的实例。

    我的ModelController将管理我的模型,加载,编辑,删除等。我仍然将我的Model类暴露给ViewController,但是View永远不会离开ViewController。您将永远不会在ModelController中看到View。

    这样做的好处是,如果您以后创建一个iPad应用程序-您的模型及其行为方式完全与ViewControllers无关,那么当您为iPad应用程序创建一些新的UIViewControllers时-您可以插入ModelControllers。

    您的ModelController可以有一个父类,该父类具有重复的CRUD方法。

    或者...

    名为MagicalRecord https://github.com/magicalpanda/MagicalRecord的库将Active Record模式添加到NSManagedObjects。

    08-04 00:57