从数组中删除对象

时间:2013-05-27 05:40:53

标签: iphone ios nsmutablearray

尝试从NSMutableArray中删除对象,下面是对数组的添加方式。

sectionInfo = [self.collectionView indexPathsForSelectedItems];

如何尝试删除

[sectionInfo removeAllObjects];

我得到的错误是无法识别的选择器发送到实例0x169cfb70。 我认为这是因为我没有将项目添加到数组屁addObject:中,但这不是我的要求。那么,如何管理这个。

3 个答案:

答案 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而不是NSMutableArrayNSArray没有removeAllObjects方法。

sectionInfo = [[self.collectionView indexPathsForSelectedItems]mutableCopy];