[NSArray subarrayWithRange:]: индекс 9779 за пределами - PullRequest
0 голосов
/ 07 марта 2011

Я получаю ошибку:

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

4 голосов
/ 07 марта 2011

Вы не говорите, что куски в вашем фрагменте кода. Я предполагаю, что ошибка в том, что вы обращаетесь за пределы массива чанков.

Может быть, что-то подобное будет работать лучше:

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

Для уточнения немного больше. Вы берете подмассив, который начинается с i и идет до [количество ключей] больше элементов, но нет проверки, что i + [количество ключей] не превышает размер массива чанков. Возможно, это вызывает проблемы?

1 голос
/ 12 декабря 2012

NSMakeRange не работает таким образом. Параметр forst является начальным индексом, а второй - длиной подмассива. В вашем случае ваш код должен выглядеть так:

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

Вот почему вы получаете исключение "индекс вне границ".

...