2

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

'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 的数组,并且我想创建一个子数组,其中包含我尚未遍历的所有项目。有谁可以帮我离开这里吗?

4

1 回答 1

6

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

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

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

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

于 2014-07-19T23:42:02.233 回答