[__NSArrayM objectAtIndex:]:索引2超出空数组的边界

时间:2015-02-17 14:39:14

标签: ios objective-c

我收到错误:

*** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSA

这是我的代码:

static NSArray * clone(NSArray * a, NSUInteger b)
{
    // return a.slice(b);
    return [a subarrayWithRange:NSMakeRange(b, a.count - b)];
}
// swap: function(a, b) {
static NSArray * swap(NSArray *a, NSUInteger b)
{
    NSMutableArray * array = [NSMutableArray arrayWithArray:a];

// var t1, t2;
id t1, t2;

// t1 = a[0];
t1 = array.firstObject;

// t2 = a[b % a.length];
t2 = array[b % a.count];

// a[0] = t2;
array[1] = t2;

// a[b] = t1;
array[b] = t1;

// return a;
return array.copy;
}

我很困惑为什么它会给我错误。这只是代码片段,来自HCYoutubeParser的修改版本。

1 个答案:

答案 0 :(得分:2)

因为只是在调试应用程序时,您会在此行中找到

array[1] = t2;

变量数组没有2个项目来访问项目#1,它包含0或1个项目,你应该像这样检查

if (array.count >= 2) {
    array[1] = t2;
}