核心数据dao模式

时间:2013-02-03 22:24:21

标签: cocoa core-data

我正在开始为ios开发,现在我正在研究核心数据。 有一件事对我来说并不清楚,当我在学习时,很多人都在管理控制器上管理核心数据实体。 对我来说,这不是MVC,因为核心数据来自模型层。

所以我认为使用DAO模式实现核心数据会很好,但在此之前我想知道是否存在任何核心数据模式,或者是否存在使用核心数据实现DAO的一些缺点?

2 个答案:

答案 0 :(得分:8)

避免在控制器中实现数据查找方法确实是正确的。这样就遵循了MVC设计模式的理念:控制器应该只调用高级“粘合”代码,因此充当描述视图如何与模型交互的文档。

关于持久对象,有两种主要方法:

  • 使用ActiveRecord模式
  • 使用数据访问对象模式。

数据访问对象(DAO)是专用于将模型/域对象持久存储到数据源的接口。

ActiveRecord 模式将持久性方法放在模型对象本身上,而DAO定义了一个离散的接口。 DAO模式的优点是:

  • 很容易定义另一种持久性风格,例如从数据库迁移到云,而不改变界面,从而影响其他类。

  • 持久性问题远离主要模型对象关注模块化。

ActiveRecord模式的优点是简单。

ActiveRecord for CoreData

目前,ActiveRecord模式在Objective-C开发人员中似乎更受欢迎。以下项目为CoreData提供ActiveRecord:https://github.com/magicalpanda/MagicalRecord

适用于CoreData的DAO

我不熟悉为CoreData提供DAO模式的广泛使用的库。但是,如果没有图书馆的协助,它可以很容易地应用:

  • 定义特定实体的所有数据方法 - findByName,保存,删除等协议。
  • 通过调用适当的CoreData方法实现协议。

注意:example project for the Typhoon framework很快将包含一些将Core模式应用于CoreData的示例。

答案 1 :(得分:2)

您正在寻找类似Core Date Persistence Framework

的内容

这个框架允许你这样做:

DAOFactory *factory = [DAOFactory factory];
DAO *dao = [factory createRuntimeDAO:@"EntityName"];
NSArray *items = [dao findAll];

还有很多有趣的事情。