使用range创建子数组时抛出NSRangeException

时间:2014-07-19 23:39:12

标签: objective-c nsarray nsrange nsrangeexception

这是一个非常奇怪的错误,我得到了。就是这样:

'NSRangeException', reason: '*** -[NSArray subarrayWithRange:]: range {2, 3} extends beyond bounds [0 .. 3]'

我不明白的是范围(2,3)明显不超出范围界限(0,3)

事实上,它在这些范围内,因为我设置了数组和范围,如下所示:

NSRange range = NSMakeRange([wordArray indexOfObject:letterInWordArray]+1,wordArray.count-1);
NSMutableArray* sortedSubArray = [[NSMutableArray alloc] initWithArray:[wordArray subarrayWithRange:range]];

基本上我正在迭代一个名为wordArray的数组,我想创建一个子数组,它是我尚未迭代的所有项目。任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:3)

  

我不明白的是范围(2,3)显然不会超出范围(0,3)的范围

确实如此:NSRange的第二个元素是其长度,因此(2, 3)包含索引234

因此,如果[wordArray indexOfObject:letterInWordArray]返回的值大于零,则返回的范围将超出相应数组的限制。

要解决此问题,请先将[wordArray indexOfObject:letterInWordArray]指定给变量,然后从总长度中减去该数字。这将为您提供从匹配位置到数组末尾的范围。

相关问题