[NSArray subarrayWithRange:]:索引9779超出界限

时间:2011-03-07 02:39:35

标签: iphone objective-c xcode ios4 nsarray

我收到错误:

*** -[NSArray subarrayWithRange:]: index 9779 beyond bounds [0 .. 9776]'
***

我不知道如何解决它。

如果你能告诉我那会很棒!

NSArray *keys = [NSArray arrayWithObjects:@"type", @"name", @"street", @"address1", @"address2", @"town", @"county", @"postcode", @"number", @"coffee club", @"latitude", @"longitude", nil];   
    for (int i = 0; i < [chunks count]; i += [keys count])
    {
        NSArray *subarray = [chunks subarrayWithRange:NSMakeRange(i, [keys count])];
        NSDictionary *dict = [[NSDictionary alloc] initWithObjects:subarray forKeys:keys];
        NSLog(@"%@", dict);
        // do something with dict

        [dict release];
    }

2 个答案:

答案 0 :(得分:4)

您没有说明代码段中有哪些块。 我猜错误是你正在访问块数组的边界。

也许这样的事情会更好:

    for (int i = 0; i + [keys count] <= [chunks count]; i += [keys count])

详细说明一下。你正在采用一个从i开始并进入[keys count]更多元素的子数组,但是没有检查i + [keys count]没有超过块数组大小。也许这会导致问题?

答案 1 :(得分:1)

NSMakeRange无法正常工作。 forst参数是起始索引,第二个是子数组的长度。 在您的情况下,您的代码应如下所示:

NSArray *subarray = [chunks subarrayWithRange:NSMakeRange(i, [keys count] - i)];

这就是为什么你得到“索引越界”的例外。