2012-03-16 9 views
1

コアデータについて学ぶにあたって、アップルはビューコントローラ内でどのようにクエリクラスを直接使用していたのか気づいたことがあります。これは悪いMVC(ビューアコントローラの内部に直接データベースアクセスロジックがある)のようです。これらの種類のアクションを、データベースからデータを取得し、それを呼び出すビュー・コントローラーに戻すクラスの別のスイートに抽象化することは意味がありますか? コアデータを使用したモデルコントローラの抽象化

編集 -

だから、私は「アクションの種類」と言うときだけ、明確にするために、私は、特にCRUD操作を意味します。 「モデルコントローラ」と呼ばれる他のものについてのアイデアがありましたら、私はそれらについて聞いてみたいと思います。

+1

これは意味があります。 –

答えて

2

これは意見の問題です。しばしば、テンプレートは最も単純な作業例です。テンプレートを複数のファイルに分割するのは難しいです。

はい、個人的には、私は一般的に別のNSManagedObjectサブクラスをスピンアウトします。私はすべての自動生成されたものを持っている_MySubclassオブジェクトを持っているし、モデルベースのビジネスロジックを持っているMySubclassを実際に参照するようにしてください(モゲナーやその他の方法でもそうすることができます)。おそらくそれを「モデルコントローラ」と「ビューコントローラ」と考えることは、別の方法です。

0

これは非常に良い質問であり、その答えは状況によって異なります。おそらくアーキテクチャの純粋主義者は、別々のモデルコントローラを主張し、このアプローチには多くの利点があります。しかし、時には、私が簡単な見方をしているときにキー値を使用していることがあります。たとえば、MacとiOSで同じモデルをコーディングするときなど、複雑な作業がある場合は、別々のモデルコントローラを使用することで、たくさんのコードを再利用できます。発散する必要がある場合、Obj Cのカテゴリは、オーバーヘッドを増やさずに機能を拡張するための非常にクリーンな方法です。私は個人的には大規模なサブクラス化よりもカテゴリを好む。

NSFetchedResultsControllerがリリースされたので、私のモデルクラスはよりリーンです。これには多くのニュアンスがあり、あなたのアプリケーションに最適なソリューションを提供するのに役立ちます。また、ユニットテストを書くことで、問題を解決して設計を検証したり、図面ボードに戻ったりするのに役立ちます:)

関連する問題