Подтвердить что ты не робот

EXC_BAD_ACCESS при попытке создать новый NSDictionary

У меня возникают проблемы с созданием NSDictionaries в цикле и добавлением его в NSMutableArray.

В принципе, я просто хочу изменить имена ключей, но поскольку я не мог найти функцию для этого, я пошел на следующий код:

- (NSMutableArray *)getCategoriesForChannel:(int)channelId {
    NSDictionary *data = [self call:@"get_categories.ashx"];
    NSArray *categories = [data objectForKey:@"categories"];
    NSMutableArray *returnArray = [NSMutableArray
                          arrayWithCapacity:[categories count]];

    for(NSDictionary *category in categories) {
        [returnArray addObject:[NSDictionary dictionaryWithObjectsAndKeys:
                         [category objectForKey:@"Channel_id"], @"id",
                         [category objectForKey:@"Channel_name"], "@name", nil]];
    }
    return returnArray;
}

Но приложение всегда завершает работу, когда оно достигает метода addObject: и выбрасывает EXC_BAD_ACCESS. Я думаю, что это имеет какое-то отношение к управлению памятью, но поскольку у меня нет C-фона, я понятия не имею, как решить эту проблему. Может ли кто-нибудь указать мне в правильном направлении? Спасибо заранее!

4b9b3361

Ответ 1

[returnArray addObject:
    [NSDictionary dictionaryWithObjectsAndKeys:
    [category objectForKey:@"Channel_id"], @"id",
    [category objectForKey:@"Channel_name"], "@name", nil]];

Если это действительно тот код, который у вас есть (и опечатка не была введена при записи в вашем веб-браузере), обратите внимание, что последний ключ, который у вас есть, "@name" вместо @"name". Это будет фактически C-строкой, а не NSString, которая не может быть правильно добавлена ​​в NSArray (или большинство классов коллекции, если на то пошло).

Ответ 2

Внутри цикла вы можете NSLog this [category objectForKey: @ "Channel_id" ] и [category objectForKey: @ "Channel_name" ]? Я подозреваю, что один дает ноль и вызывает проблемы. Не уверен. Просто предположим.