核心数据功能的最佳实践

时间:2012-01-15 19:03:07

标签: ios iphone core-data

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

目前我有一个应用程序,它有几个视图控制器,它们都执行类似的功能,比如向实体添加对象,删除实体等等。我想有几种方法可以解决这个问题:

  1. 每个视图控制器都有自己的addItem:blah类。下行是这导致类之间的一些复制意大利面

  2. 创建一个具有核心数据方法的超类,并从该类继承。必要时覆盖

  3. 创建一个类别,以便所有视图控制器实例都具有这些方法而无需子类化

  4. 创建一个可以调用的数据管理器单例。这可能很有用,所以我可以在每个视图控制器之外排队请求和进行数据管理。下行是一般的坏主意

1 个答案:

答案 0 :(得分:4)

CoreData和ViewControllers不需要彼此了解。

UIViewControllers不是MVC世界中的传统控制器。它们更接近于视图 - 我更喜欢用这个来创建它们(大多数Apple示例代码都有很多ModelController代码 - 可能是为了简化示例)。

我喜欢创建ModelControllers并让我的ViewController管理我的Views,并为ViewControllers提供了ModelController的实例。

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

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

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

可替换地....

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