我启用了多选集合视图。(Xcode 7,iOS 9)
NSArray *paths = [self.collectionView indexPathsForSelectedItems];
// data source
for (NSIndexPath *path in paths) {
[datasourceArray removeObjectAtIndex:path.item];
}
// delete
[self.collectionView deleteItemsAtIndexPaths:paths];
我有9件物品。它崩溃了这条消息:
原因:' *** - [__ NSArrayM removeObjectAtIndex:]:索引8超出界限[0 .. 7]'
答案 0 :(得分:1)
想想删除元素时数组会发生什么 - 上面的所有元素都会向下移动1,因此元素8现在是元素7,元素7现在是元素6,依此类推。因此,当您删除元素6时,不再有元素9,因此您将获得越界异常。
您可以使用removeObjectAtIndex
方法 -
removeObjectsAtIndexes:
NSArray *paths = [self.collectionView indexPathsForSelectedItems];
NSMutableIndexSet removeIndexes=[NSMutableIndexSet new];
for (NSIndexPath *path in paths) {
[removeIndexes addIndex:path.item];
}
// delete
[datasourceArray removeObjectAtIndexes:removeIndexes];
[self.collectionView deleteItemsAtIndexPaths:paths];