我正在开始为ios开发,现在我正在研究核心数据。 有一件事对我来说并不清楚,当我在学习时,很多人都在管理控制器上管理核心数据实体。 对我来说,这不是MVC,因为核心数据来自模型层。
所以我认为使用DAO模式实现核心数据会很好,但在此之前我想知道是否存在任何核心数据模式,或者是否存在使用核心数据实现DAO的一些缺点?
答案 0 :(得分:8)
避免在控制器中实现数据查找方法确实是正确的。这样就遵循了MVC设计模式的理念:控制器应该只调用高级“粘合”代码,因此充当描述视图如何与模型交互的文档。
关于持久对象,有两种主要方法:
数据访问对象(DAO)是专用于将模型/域对象持久存储到数据源的接口。
ActiveRecord 模式将持久性方法放在模型对象本身上,而DAO定义了一个离散的接口。 DAO模式的优点是:
很容易定义另一种持久性风格,例如从数据库迁移到云,而不改变界面,从而影响其他类。
持久性问题远离主要模型对象关注模块化。
ActiveRecord模式的优点是简单。
ActiveRecord for CoreData
目前,ActiveRecord模式在Objective-C开发人员中似乎更受欢迎。以下项目为CoreData提供ActiveRecord:https://github.com/magicalpanda/MagicalRecord
适用于CoreData的DAO
我不熟悉为CoreData提供DAO模式的广泛使用的库。但是,如果没有图书馆的协助,它可以很容易地应用:
注意: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];
还有很多有趣的事情。