我在循环创建 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 背景,所以我不知道如何解决这个问题。
有人可以指出我正确的方向吗?
提前致谢!
最佳答案
[returnArray addObject:
[NSDictionary dictionaryWithObjectsAndKeys:
[category objectForKey:@"Channel_id"], @"id",
[category objectForKey:@"Channel_name"], "@name", nil]];
如果这实际上是您拥有的代码(并且在您的网络浏览器中编写它时没有引入拼写错误),请注意您拥有的最后一个键是 "@name"
而不是@“名字”
。这实际上是一个 C 字符串,而不是 NSString
,它不能正确地添加到 NSArray
(或大多数集合类,就此而言)。
关于objective-c - 尝试创建新的 NSDictionary 时出现 EXC_BAD_ACCESS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4417813/