/ / [__NSArrayM objectAtIndex:]: Index 2 über Grenzen für leeres Array - ios, objective-c

[__NSArrayM objectAtIndex:]: Index 2 über Grenzen für leeres Array - ios, objective-c

Ich bekomme den Fehler:

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

Hier ist mein Code:

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;
}

Ich bin verwirrt darüber, warum es mir den Fehler gibt. Dies ist nur ein Ausschnitt des Codes, Dies kommt von einer modifizierten Version von HCYoutubeParser.

Antworten:

2 für die Antwort № 1

Denn wenn Sie Ihre Anwendung debuggen, werden Sie das in dieser Zeile finden

array[1] = t2;

Das variable Array hat nicht 2 Elemente, um auf das Element # 1 zuzugreifen, es enthält entweder 0 oder 1 Element. Sie sollten eine solche Überprüfung durchführen

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