2012-01-04 8 views
0

私のiPhoneアプリケーションでは、アイテムのリストがアイテムのリストに含まれているときにテーブルビューをリロードしたいと思います(このリストはアプリケーションのNSMutableArrayプロパティです)。デリゲート)が変更されます。
どうすればいいですか?
最初はNSTimerのものですが、これは正しい方法ではないと思います... 5月KVOパターンはトリックですか?アプリケーションのデリゲートプロパティが変更されたときにUITableControllerのテーブルビューをリロードします

答えて

1

KVOは行く方法ですが、KVC/KVOメカニズムが動作するように、適切なアクセサを使用して配列を変更する必要があります。

少なくとも、mutableArrayValueForKey:によって返された可変プロキシを使用してNSMutableArrayプロパティを変更します。 Apple's documentation suggests that you go further

あなたが強く、むしろ 直接変更可能なセットを返すアクセサに頼るよりも、これらの可変アクセサを実装することをお勧めします。関係の中の データに変更を加えるときは、 変更可能アクセサがはるかに効率的です。

  • -insertObject:in<Key>AtIndex:または-insert<Key>:atIndexes::キーと値の変更可能なため準拠したコーディングであるために

    では、次のメソッドを実装する必要があり 対多の関係を命じました。これらのメソッドの少なくとも1つを実装する必要があります。これらは、 NSMutableArrayメソッドinsertObject:atIndex:および insertObjects:atIndexes:に類似しています。

  • -removeObjectFrom<Key>AtIndex:または-remove<Key>AtIndexes:。これらのメソッドの少なくとも1つを実装する必要があります。これらのメソッドは、それぞれ NSMutableArrayメソッドremoveObjectAtIndex:removeObjectsAtIndexes:に対応します。

  • -replaceObjectIn<Key>AtIndex:withObject:または-replace<Key>AtIndexes:with<Key>:です。オプション。ベンチマークによってパフォーマンスが問題であることが示された場合に実装します。

-insertObject:in<Key>AtIndex:方法は インサートにオブジェクトを通過し、それが 挿入するインデックスを指定NSUIntegerれます。 -insert<Key>:atIndexes:メソッドは、 オブジェクトの配列を、渡された NSIndexSetで指定されたインデックスでコレクションに挿入します。これら2つの方法のいずれかを実装するだけで済みます。 メソッド。

関連する問題