【问题标题】:[NSArray subarrayWithRange:]: index 9779 beyond bounds[NSArray subarrayWithRange:]:索引 9779 超出范围
【发布时间】:2011-07-10 01:43:23
【问题描述】:

我收到错误:

*** -[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];
    }

【问题讨论】:

    标签: iphone objective-c xcode ios4 nsarray


    【解决方案1】:

    您没有说代码 sn-p 中的块是什么。 我猜错误是您正在访问块数组的边界。

    也许这样会更好:

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

    再详细一点。您正在获取一个从 i 开始并进入 [keys count] 更多元素的子数组,但没有检查 i + [keys count] 不会超过块数组大小。也许这会导致问题?

    【讨论】:

      【解决方案2】:

      NSMakeRange 不能以这种方式工作。 forst 参数是起始索引,第二个是子数组的长度。 在您的情况下,您的代码应如下所示:

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

      这就是您得到“索引越界”异常的原因。

      【讨论】:

        猜你喜欢
        • 2014-03-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-26
        • 2018-04-11
        • 1970-01-01
        • 1970-01-01
        • 2018-03-01
        相关资源
        最近更新 更多