7

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

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

4

2 回答 2

8

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

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

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

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

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

  • 它很容易定义另一种持久性风格,例如从数据库迁移到云,而无需更改接口并因此影响其他类。

  • 持久性关注点被模块化,远离主要的模型对象关注点。

ActiveRecord 模式的优点是简单。

CoreData 的 ActiveRecord

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

CoreData 的 DAO

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

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

注意:Typhoon 框架的示例项目将很快包含一些将 DAO 模式与 CoreData 一起应用的示例。

于 2014-01-09T07:36:00.793 回答
2

您正在寻找类似Core Date Persistence Framework的东西

这个框架允许你这样做:

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

还有很多更有趣的事情。

于 2014-03-04T13:06:23.197 回答