【发布时间】:2014-04-01 21:18:30
【问题描述】:
我有一个数组结构如下:
NSMutableArray topArray{
NSMutableArray middleArray{
NSMutableArray lowerArray{
NSMutableDictionary dict{
}
}
}
}
数组结构中填充了一些我从网上检索到的数据是 JSON 格式。
我正在尝试编辑 NSMutableDictionary 中的一个对象,如下所示:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSMutableArray *lowerArray = [[self middleArray] objectAtIndex:[indexPath section]];
NSMutableDictionary *dict = [lowerArray objectAtIndex:[indexPath row]];
[dict setObject:[NSNumber numberWithInt:1] forKey:@"key"];
[[self tableView] reloadData];
}
每个数组中的数据都是正确的(我已经检查了打印语句),但是,当我尝试更改 dict 中的对象时,我收到以下错误: 原因:
'-[__NSCFDictionary setObject:forKey:]: 变异方法发送到 不可变对象'
我需要在数组结构中更改字典中的对象。
这可能是 JSON 数据的问题吗,因为当 topArray 首次使用 JSON 数据初始化时,中间和较低的数组只是 NSArray 的形式?
抱歉,如果这令人困惑,如果您有任何问题,我会尽力澄清。
提前感谢您的帮助。
【问题讨论】:
-
你是如何初始化数据结构的?
-
如果您从 NSJSONSerialization 获取 JSON,则可以选择让它返回可变对象。打开该选项,您的问题应该就解决了。
-
注意,仅仅因为一个指针被声明为 NSMutableDictionary 并不意味着它指向的对象是可变的,甚至是一个字典。
标签: ios objective-c arrays nsarray nsdictionary