私はiOS向けの開発を始めており、現在はコアデータを研究しています。多くの人がコントローラーでコアデータエンティティを管理していたことを研究していたとき、私には1つのことがはっきりしませんでした。コアデータはモデルレイヤーからのものであるため、私にとってこれはMVCではありません。
したがって、DAOパターンを使用してコアデータを実装するのは良いことだと思いますが、コアデータパターンがあるかどうか、またはコアデータを使用してDAOを実装するいくつかの短所があるかどうかを知りたいですか?
コントローラにデータ検索メソッドを実装しないようにするのは確かに正しいことです。このようにして、MVCデザインパターンの哲学が守られます。コントローラーは高レベルの「グルー」コードを呼び出すだけで、ビューがモデルとどのように相互作用するかを説明するドキュメントとして機能する必要があります。
永続オブジェクトに関しては、これに対する2つの主要なアプローチがあります。
データアクセスオブジェクト(DAO)は、モデル/ドメインオブジェクトをデータソースに永続化するための専用のインターフェイスです。
ActiveRecordパターンは、永続メソッドをモデルオブジェクト自体に配置しますが、DAOは個別のインターフェイスを定義します。DAOパターンの利点は次のとおりです。
インターフェイスを変更して他のクラスに影響を与えることなく、データベースからクラウドに移動するなど、別のスタイルの永続性を簡単に定義できます。
永続性の懸念は、メインモデルオブジェクトの懸念から離れてモジュール化されています。
ActiveRecordパターンの利点は単純さです。
CoreDataのActiveRecord
現時点では、ActiveRecordパターンはObjective-C開発者の間ではるかに人気があるようです。次のプロジェクトは、CoreDataのActiveRecordを提供します:https ://github.com/magicalpanda/MagicalRecord
CoreData用のDAO
CoreDataのDAOパターンを提供する広く使用されているライブラリに精通していません。ただし、ライブラリの支援がなくても、非常に簡単に適用できます。
注意:Typhoonフレームワークのサンプルプロジェクトには、 CoreDataでDAOパターンを適用するいくつかの例がまもなく含まれます。
Core DatePersistenceFrameworkのようなものを探しています
このフレームワークを使用すると、次のように実行できます。
DAOFactory *factory = [DAOFactory factory];
DAO *dao = [factory createRuntimeDAO:@"EntityName"];
NSArray *items = [dao findAll];
そして、もっと面白いことがたくさんあります。