感谢您提供以下帮助:
我正在加载以下JSON数据..
(
{
name = Facilities;
versiondate = "1972-01-01";
},
{
name = Services;
versiondate = "1972-01-01";
},
{
name = ThingsToDo;
versiondate = "1972-01-01";
}
)
变成以下代码:
NSMutableDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:updateData options:kNilOptions error:&errorString];
然后,我尝试遍历Dictionary,并尝试将versiondate更改为今天的日期。我已经花了两个多小时试图做到这一点……而且没有运气!我正在努力尝试也了解MutableCopies等。我在这个方面相对较新...
因此,我正在尝试以下方法:
for (NSMutableDictionary *item in dictionary)
{
NSMutableDictionary *newdict = [item mutableCopy];
NSLog(@"I have item as: %@",newdict);
NSLog(@"I have the date as: %@", [newdict objectForKey:@"versiondate"]);
[newdict setObject:[NSDate date] forKey:@"versiondate"];
NSLog(@"I now have the date as: %@", [newdict objectForKey:@"versiondate"]);
NSLog(@"I have item as: %@",newdict);
item = newdict;
}
NSLog(@"New Dictionary now becomes: %@", dictionary);
而忽略NSLog的东西,我没有运气。我只是想将versiondate更改为今天的日期,然后为每个versiondate保存它。叹。
任何帮助告诉我我的“明显”错误在哪里的帮助将不胜感激。我将item声明为NSMutableDictionary ...那么为什么我必须随后定义newdict?更新值后,如何将其“保存”回我的原始词典中?
最佳答案
如果在反序列化JSON时需要可变的字典和数组,请传递NSJSONReadingMutableContainers
选项。否则,结果是不可变的。照此处理将导致您看到的NSInternalInconsistencyException
。
您可以按照显示的代码创建子词典的可变副本,但这不会更改原始顶级容器的内容。 (然后将副本分配回循环底部的原始变量中,则一无所获。)
关于ios - 遍历NSMutableDictionary并更改值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12613885/