7

私はiOS向けの開発を始めており、現在はコアデータを研究しています。多くの人がコントローラーでコアデータエンティティを管理していたことを研究していたとき、私には1つのことがはっきりしませんでした。コアデータはモデルレイヤーからのものであるため、私にとってこれはMVCではありません。

したがって、DAOパターンを使用してコアデータを実装するのは良いことだと思いますが、コアデータパターンがあるかどうか、またはコアデータを使用してDAOを実装するいくつかの短所があるかどうかを知りたいですか?

4

2 に答える 2

8

コントローラにデータ検索メソッドを実装しないようにするのは確かに正しいことです。このようにして、MVCデザインパターンの哲学が守られます。コントローラーは高レベルの「グルー」コードを呼び出すだけで、ビューがモデルとどのように相互作用するかを説明するドキュメントとして機能する必要があります。

永続オブジェクトに関しては、これに対する2つの主要なアプローチがあります。

  • ActiveRecordパターンを使用する
  • データアクセスオブジェクトパターンを使用します。

データアクセスオブジェクト(DAO)は、モデル/ドメインオブジェクトをデータソースに永続化するための専用のインターフェイスです。

ActiveRecordパターンは、永続メソッドをモデルオブジェクト自体に配置しますが、DAOは個別のインターフェイスを定義します。DAOパターンの利点は次のとおりです。

  • インターフェイスを変更して他のクラスに影響を与えることなく、データベースからクラウドに移動するなど、別のスタイルの永続性を簡単に定義できます。

  • 永続性の懸念は、メインモデルオブジェクトの懸念から離れてモジュール化されています。

ActiveRecordパターンの利点は単純さです。

CoreDataのActiveRecord

現時点では、ActiveRecordパターンはObjective-C開発者の間ではるかに人気があるようです。次のプロジェクトは、CoreDataのActiveRecordを提供します:https ://github.com/magicalpanda/MagicalRecord

CoreData用のDAO

CoreDataのDAOパターンを提供する広く使用されているライブラリに精通していません。ただし、ライブラリの支援がなくても、非常に簡単に適用できます。

  • プロトコルのfindByName、save、deleteなど、特定のエンティティのすべてのデータメソッドを定義します。
  • 適切なCoreDataメソッドを呼び出してプロトコルを実装します。

注意:Typhoonフレームワークのサンプルプロジェクトには、 CoreDataでDAOパターンを適用するいくつかの例がまもなく含まれます。

于 2014-01-09T07:36:00.793 に答える
2

Core DatePersistenceFrameworkのようなものを探しています

このフレームワークを使用すると、次のように実行できます。

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

そして、もっと面白いことがたくさんあります。

于 2014-03-04T13:06:23.197 に答える