NSMutableArrayオブジェクトのcountプロパティを確認したいと思います。オブジェクトが追加または削除されるたびに、多対多リレーションシップのためにIndexed Array Accessorsを使用して、配列の変更を直接観察できました。しかし、代わりにcountプロパティを単に観察したいので、observeValueForKeyPathメソッドを使用すると、パラメータに渡されるオブジェクトは配列を保持するクラスではなく配列オブジェクトになります。NSMutableArrayオブジェクトのCountプロパティを監視する
次のように私の状況は次のとおりです。
私はプロパティ(およびIVAR)として私AppDelegateクラスで宣言NSMutableArrayの*カードを持っています。
私のViewControllerから、私はこの配列のcountプロパティを観察してみてください。
[appDelegate.cards addObserver:self forKeyPath:@"count" options:0 context:NULL];
しかし、これは次のエラーで私のプログラムをクラッシュ:
[<__NSArrayM 0x4e17fd0 addObserver:forKeyPath:options:context] is not supported. Key path: count'
私はアクセサを実装しようとしました多対多関係の場合
- (void)addCardsObject:(Card *)anObject;
- (void)removeCardsObject:(Card *)anObject;
ただし、プログラムはまだクラッシュしますs。
私はいくつかの質問があります:
- どのように私はこのNSMutableArrayののcountプロパティを観察することができるだろうか?
- NSMutableArrayの数が1対1の関係として定義されているか、それが多対多であるかどうかを判断する際に重要なオブジェクト全体です(NSMutableArrayはコレクションオブジェクトなので、私はコレクションの中のオブジェクトのプロパティではなく、countプロパティを観察するだけですが)。
ありがとうございます。
IBを使用するのではなく、プログラムで実装することはできますか?そうでない場合は、これを達成するための別の方法がありますか?私は私のアプリでプログラムですべてをやろうとしています。 –
@Jim Hubbard:はい。 KVOは、プログラム的な手段で完全にアクセスできます。http://www.google.com/url?sa=t&source=web&cd=1&ved=0CBYQFjAA&url=http%3A%2F%2Fdeveloper.apple.com%2Flibrary%2Fios%2FDOCUMENTATION%2FCocoa% 2FConceptual%2FKeyValueObserving%2FArticles%2FKVOCompliance.html&ei = SjhAToTIPKOnsALX9skZ&usg = AFQjCNH9alzi9_4igqRe36K3-R5zayq-0A – Chuck
KVOではなく、NSArrayControllerオブジェクトを作成し、それを使用します。私はチュートリアルを検索しましたが、インターフェイスビルダーを使用してNSArrayControllerを実装する方法がわかっているチュートリアルのようです。 –