当您有多个执行相似核心数据调用的视图控制器时,在使用核心数据的iPhone应用程序中使用的最佳设计是什么?
当前,我有一个具有多个视图控制器的应用程序,这些视图控制器均执行类似的功能,例如将对象添加到实体,删除实体等。我认为有几种方法可以解决此问题:
最佳答案
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。