私はNSArray
property
をKVO
と見ています。私はthis postのようなKVC
を実装しましたが、私もKVC
のアレイアクセサのほとんどを実装しました。それを突然変異させるために、私はmutableArrayValueForKey
を使います。私はを呼び出すと、私はそれぞれの単一削除されたアイテムためNSKeyValueChangeRemoval
変更を取得removeAllObjectsのKVOは、それぞれの項目のNSKeyValueChangeRemovalをトリガーします。
:それは2つの問題を除いて、正常に動作します。すべての削除されたインデックスを含む
NSKeyValueChangeRemoval
通知を1つだけ受信したいとします。同様に私が
addObjectsFromArray:
と呼ぶとき、私は追加された各項目につきNSKeyValueChangeInsertion
を得る。私はそれにすべての追加されたインデックスとNSKeyValueChangeInsertion
通知のみを受け取りたいと思います。私はを行う
お知らせKVC方法remove<Key>ItemsAtIndexes:
とinsert<Key>Items:atIndexes:
を実施しています。彼らはではなく、と呼ばれています。
- (void)removeAllObjectsWorkaroundFromArray:(NSMutableArray *)modelArray {
NSRange indexRange;
indexRange.length = modelArray.count;
indexRange.location = 0;
NSIndexSet *indexSet = [NSIndexSet indexSetWithIndexesInRange:indexRange];
[modelArray removeObjectsAtIndexes:indexSet];
}
- (void)addObjectsFromArrayWorkaroundWithArray:(NSMutableArray *)modelArray arrayToAdd:(NSArray *)arrayToAdd {
NSRange indexRange;
indexRange.length = arrayToAdd.count;
indexRange.location = modelArray.count;
NSIndexSet *indexSet = [[NSIndexSet alloc] initWithIndexesInRange:indexRange];
[modelArray insertObjects:arrayToAdd atIndexes:indexSet];
}
直接上記の回避策を必要とせずにとaddObjectsFromArray:
を使用する方法があります:私は次の回避策を使用
?
最後のコード行に誤字がありますか? – Mundi
Yepp、ありがとう。修正されました。 – fabb