如何切片NSMutableArray

21 objective-c slice nsmutablearray

我有一个NSMutableArray,只需要对象[0:5].是否有一种简单的切片方法?可以在索引后删除所有对象吗?我可以将子数组复制到另一个NSMutableArray吗?

Jam*_*ord 62

使用实例方法- (NSArray *)subarrayWithRange:(NSRange)range.

例如:

NSArray* slicedArray = [wholeArray subarrayWithRange:NSMakeRange(0, 5)];
Run Code Online (Sandbox Code Playgroud)

  • 请注意,NSMakeRange(0,5)并不意味着"切片位置0到5",它意味着"从0开始切片并递增5".它与0:5没有区别,但如果你做1:5则区别变得很重要. (14认同)
  • 是的,所以使用`NSMakeRange(1,5)`意味着`slicedArray`将在索引1到6中包含来自`wholeArray`的对象. (4认同)
  • 为了避免少于5个元素的`NSRangeException`,你应该使用:`[wholeArray subarrayWithRange:NSMakeRange(0,MAX(wholeArray.count,5))]` (2认同)
  • @Szu我想您会发现我们需要`MIN`而非`MAX`来防止崩溃:) (2认同)

Ano*_*mie 15

我看到James Bedford已经回答了如何提取一系列索引.要删除NSMutableArray范围内的对象,可以使用[wholeArray removeObjectsInRange:...].要删除特定索引后的所有对象,可以创建适当的范围NSMakeRange(index, wholeArray.count - index).