1

ねえ、

Xcodeで何かを書いています。永続性のためにCoreDataを使用し、ビューとモデルをCocoaBindingsとリンクします。ほぼ通常のCoreDataアプリケーションです。

Xibにアレイコントローラー(NSArrayController)があります。これは、慣例として、そのmanagedObjectContextをAppDelegateにバインドし、エンティティを追跡します。ここまでは順調ですね。

現在、このNSArrayControllerの「コンテンツセット」入札は、別のNSArrayController(otherAc.selection.detailsOfMaster)での選択からのkeyPathによって、そのコンテンツセットを(予想どおりに)制限します。これは、マスターと詳細の関係を実装する通常の方法です。

他のコントロールを使用して、実行時にキーパスを可変的に変更したいと思います。このようにして、他のいくつかのコンテンツセットを含むコンテンツセットを返す必要があります。これらはすべて、InterfaceBuilderを超えた高度なものです。

これを実現するには、代わりにコンテンツセットをAppDelegateにバインドする必要があると思います。私はこれをやろうとしましたが、どのメソッドを実装すればよいかわかりません。KVCメソッド(objectSet、setObjectSet)を作成するだけの場合は、contentSetメソッドでアレイコントローラーのコンテンツセットを提供できます。

ただし、「更新」されないため、これを適切にバインドしているとは思いません。私はバインディングに不慣れです。マスターNSArrayControllerでの選択など、他のものが変更されたときにコンテンツセットを適切に更新するには、何を実装する必要がありますか?

4

1 に答える 1

1

ただし、「更新」されないため、これを適切にバインドしているとは思いません。

これはほとんどの場合、 KVC準拠のアクセサメソッドを使用したり、 KVO通知を投稿したりせずに、インスタンス変数に直接割り当てていることを意味します。

一般的な解決策は、プロパティのアクセサーメソッドを作成し、そのクラス内を含め、そのクラスinitdeallocメソッドを除くすべての場所でそれらを使用することです。

于 2010-04-12T14:20:57.940 に答える