0

レシピ オブジェクトの NSSet であるレシピと呼ばれるプロパティ (関係) を持つ RecipeBook と呼ばれるコア データ クラスがあるとします。

UITableView に RecipeBook を表示します。ユーザーがセルをタップすると、別の UITableViewController に Recipe が表示されます。

この最後の UITableViewController にモデルとして何を渡す必要がありますか:

  • コンテキストと fetchRequest
  • または Recipe オブジェクトの NSSet ですか?

データベースに変更があった場合、NSSet は「自動的に」更新されますか?

4

2 に答える 2

3

あなたの説明から、私はおそらく選択されたRecipeBookインスタンスを渡します。それから、(おそらく)本に含まれているすべてのレシピを取得して、テーブルに表示することができます。RecipeBookそれは、あなたの説明に基づいて、そこからRecipe真であるはずの関係が存在することを前提としています。データストアで他の作業を行う必要がある場合はRecipeBook、その管理対象オブジェクトコンテキストを要求して、それを操作できます。

NSSetフェッチされたオブジェクトは自動的に更新されません。ただし、aRecipeBookからRecipesへの関係は、レシピがレシピブックに追加またはレシピブックから削除されるたびに更新されます。

そして最後に、これを直接に渡すことUITableViewはあまり意味がありません。AppleのiOSフレームワークはMVCを念頭に置いて設計されており、これに反対すると、必要以上に困難になります。がある場合はUITableViewController、モデルオブジェクトをそれに渡すことができます。

于 2013-03-12T23:39:08.680 に答える
1

一般に、オブジェクトを表示するために「モデル」オブジェクトを渡すべきではありません。私がそれについて考えるのが好きな方法は、ビューは実際にはモデルの別の形式であるということです(両方ともデータの単なる表現と考えてください)。コントローラーの仕事は、どちらの表現も、他の表現がその表現をどのように格納するかについて何も知る必要がないことを確認することです。

したがって、基本的には、コントローラーがデータデリゲートになり、コアデータモデルへの独自の参照をテーブルセルに適切に入力する役割を果たします。

自動的に質問されるのはコアデータの設定によって異なりますが、通常、答えは「はい」です。デフォルトでは、CDはKey-Valueコーディングを使用します。これにより、。を使用してプロパティにアクセスできますvalueForKey:。より高度なセットアップでは、Xcodeにクラスを生成させる必要があります。この場合、マウスを数回クリックすると、更新されたモデルから「ドット表記」アクセサーメソッドが再生成されます。

于 2013-03-12T23:37:15.583 に答える