ios - 遍历NSMutableDictionary并更改值

标签 ios xcode nsmutabledictionary

感谢您提供以下帮助:

我正在加载以下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/

相关文章:

ios - UI 测试期间的测试对象状态 (iOS)

swift - 项目 'Pods' - 打开整个模块优化

iphone - iOS,按下 "back"按钮时停止运行功能

iphone - 我们如何存储到 NSDictionary 中? NSDictionary 和 NSMutableDictionary 有什么区别?

java - java在 objective-c 中的并发hashmap的等价物

ios - fbcdn 处理您的请求时出错

ios - 如何使用 Swift3 从我的数据库中获取一列到字典中

ios - 用另一个 NSMutableDictionary 替换 NSMutableDictionary 的一些内容

ios - 检查随机操作的结果?

ios - 在 Swift 中搜索字典数组以获取值