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-фона, я понятия не имею, как решить эту проблему.
Может ли кто-нибудь указать мне в правильном направлении?
Спасибо заранее!
Ответы
Ответ 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" ]? Я подозреваю, что один дает ноль и вызывает проблемы. Не уверен. Просто предположим.