IB、NSObjectController サブクラス、およびバインディングを使用するときにコントローラー ロジックを挿入する最良の方法を理解するのに苦労しています。
モデルとビューの間にコントローラー ロジックを挿入する必要がありますが、そのためのエレガントな方法を見つけるのに苦労しています。はい、ファイル所有者にアクションを送信し、そこでコントローラー ロジックを処理することはできますが、一部のコア データ モデルが深い関係構造を持つ 50 以上のエンティティに拡張できる場合、これは信じられないほどの量の定型コードにまで積み上げられます。
非常に単純化された例は次のとおりです。myTextWinter、myTextSpring、myTextSummer、myTextAutumn の 4 つの文字列属性を持つエンティティがあるとします。NSObjectController を介して IB でこれに接続するビューがあります。ここで、ユーザーがどこかのメニューから春、夏、秋、冬を選択して、表示したい「季節」を選択できるとします。その季節が選択されたときに、適切な季節のテキストを表示したいと思います。
この単純化された例では、おそらく NSDocument サブクラスでオブジェクトをフェッチし、ビューでバインドする mySeasonText というプロパティを作成し、NSUserDefaults で適切な季節を確認し、リクエストをモデル内の適切な属性にルーティングできます。 .
問題は、エンティティが 50 個あり、いくつかは 2 つ、3 つ、またはそれ以上の深さの関係があり、それぞれにシーズン メニューから選択するときに切り替えたい季節固有のテキスト属性のセットがある場合に発生します。または、より深いレベルでオブジェクトにアクセスするためにチェーン化された nsarraycontrollers の束がある場合。
今日まで、私は次のことを行ってきました。「mySeasonText」と呼ばれる各モデル オブジェクトにプロパティを追加し、コントローラー設定から設定を取得して、適切なシーズンにルーティングします。メニューで新しい項目が選択されるたびに、これらのオブジェクトを更新します。
これが機能し、大量のボイラープレート コードが削除されますが、コントローラー ロジックはモデルに含まれるようになりました。
もっと良い方法があるはずです!誰かが私を正しい方向に向けてもらえますか?