で を見てNSArray
property
いKVO
ます。この投稿KVC
のように実装し、配列アクセサーのほとんども実装しました。それを変異させるために、私は. 2 つの問題を除いて、正常に動作します。KVC
mutableArrayValueForKey
を呼び出すと、削除されたアイテムごとに変更が
removeAllObjects
得られます。削除されたすべてのインデックスを含む通知を1 つだけ受け取りたいです。NSKeyValueChangeRemoval
NSKeyValueChangeRemoval
同様に、 を呼び出すと、追加されたアイテムごと
addObjectsFromArray:
に取得されます。追加されたすべてのインデックスを含む通知をNSKeyValueChangeInsertion
1 つだけ受け取りたいです。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];
}
上記の回避策を必要とせずremoveAllObjects
に直接使用する方法はありますか?addObjectsFromArray: