我不明白发生了什么。如你所见,我有一个包含107个对象的数组。当我尝试将10个对象从它复制到另一个数组时,我得到了这个错误。 (如果我输入像3,8这样的数字就能正常工作)
int count = [myJson count];
NSLog(@"count: %d",count);
resultsArray = [myJson objectsAtIndexes:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(60, 70)]];
...
[53269:11303] count: 107
[53269:11303] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[NSArray objectsAtIndexes:]: index 129 in index set beyond bounds [0 .. 106]'
答案 0 :(得分:7)
NSMakeRange(I,L)。我是索引而l是长度。 NSMakeRange(60,70)表示从60索引到下70个元素的对象。
答案 1 :(得分:2)
如果您想要10个对象,则必须将范围设置为
NSMakeRange(60, 10)
这将使对象从60到79。
答案 2 :(得分:0)
NSMakeRange
有两个参数,但它们不是'start'和'end',它们是'location'和'length'......
所以NSMakeRange(60, 70)
是从60
到130
的范围,它超出了107个元素数组的范围。
要解决此问题,请改用NSMakeRange(60, 10)
。
答案 3 :(得分:0)
您正在尝试访问索引60到70多个元素的元素。因此,在这种情况下,您将收到此错误。
int count = [myJson count];
NSLog(@"count: %d",count);
resultsArray = [myJson objectsAtIndexes:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(60, 10)]];
答案 4 :(得分:0)
NSMakeRange(60, 70);
上面的语句将从第60个位置开始获取70个元素 通过这种逻辑,你的阵列中应该有60 + 70 = 130或更多130个元素。
所以如果您想要60到70之间的元素,那么请使用以下
resultsArray = [myJson objectsAtIndexes:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(60, 10)]];