fab*_*abb 5 key-value-observing ios kvc
我在看一个NSArray property用KVO.我已经KVC在这篇文章中实现了,我也实现了大多数KVC数组访问器.为了改变它,我使用mutableArrayValueForKey.它工作正常,除了2个问题:
当我打电话时removeAllObjects,我会为每个被删除的项目进行NSKeyValueChangeRemoval更改.我希望只收到一个包含所有已删除索引的通知.NSKeyValueChangeRemoval
同样地,当我打电话时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];
}
Run Code Online (Sandbox Code Playgroud)
有没有办法直接使用removeAllObjects而addObjectsFromArray:无需进行上述的解决方法?
| 归档时间: |
|
| 查看次数: |
315 次 |
| 最近记录: |