尝试从NSMutableArray
中删除对象,下面是对数组的添加方式。
sectionInfo = [self.collectionView indexPathsForSelectedItems];
如何尝试删除
[sectionInfo removeAllObjects];
我得到的错误是无法识别的选择器发送到实例0x169cfb70。
我认为这是因为我没有将项目添加到数组屁addObject:
中,但这不是我的要求。那么,如何管理这个。
答案 0 :(得分:3)
问题是-[UICollectionView indexPathsForSelectedItems]
没有返回NSMutableArray
。您想在尝试修改它之前将其转换为NSMutableArray
:
sectionInfo = [NSMutableArray arrayWithArray: [self.collectionView indexPathsForSelectedItems]];
答案 1 :(得分:1)
indexPathsForSelectedItems
返回不可变NSArray
,无论sectionInfo
如何声明。从理论上讲,你可以做到:
sectionInfo = [[self.collectionView indexPathsForSelectedItems] mutableCopy];
或者,如果您只是尝试重置sectionInfo
,则可以单独留下sectionInfo
的声明,但是然后而不是removeAllObjects
,您可以简单地说:
sectionInfo = nil;
或创建一个新阵列:
sectionInfo = [NSMutableArray array];
我想这归结为您尝试从sectionInfo
删除对象的原因,而不仅仅是重置它。
答案 2 :(得分:0)
制作indexPathsForSelectedItems
的可变副本。因为indexPathsForSelectedItems
返回NSArray
而不是NSMutableArray
。 NSArray
没有removeAllObjects
方法。
sectionInfo = [[self.collectionView indexPathsForSelectedItems]mutableCopy];