无法更新 NSUserDefaults 中字典的键值

Posted

技术标签:

【中文标题】无法更新 NSUserDefaults 中字典的键值【英文标题】:Unable to update key values for Dictionary in NSUserDefaults 【发布时间】:2013-11-14 10:25:54 【问题描述】:

我将数据从服务器 url 保存到 nsuserdefaults 作为用户详细信息。

现在,我想更新用户详细信息的 2 个键,但我无法做到。没有变化。

这是我的代码:

  NSDictionary *user;
  NSMutableDictionary *userMut; 
  user=[[NSUserDefaults standardUserDefaults] objectForKey:@"User Detail"];
  userMut=[user mutableCopy];
  [userMut setValue:@"1" forKey:@"isMobileVerified"];
  [userMut setValue:mobileNo.text forKey:@"mobile"];

任何帮助将不胜感激!如果我做错了,请告诉我如何更新存储在 nsuserdefaults 中的字典中的键值。

【问题讨论】:

你需要初始化字典.. 更新后您没有在 NSUSerDefaults 中设置对象 【参考方案1】:

您需要在设置值后同步您的更改:

[[NSUserDefaults standardUserDefaults] setObject:userMut forKey:@"User Detail"];
[[NSUserDefaults standardUserDefaults] synchronize];

【讨论】:

【参考方案2】:

当你完成使用它时尝试将值添加回来:

[[NSUserDefaults standardUserDefaults] setObject:userMut forKey:@"User Detail"];

你正在复制你的字典,然后对那个副本什么都不做

【讨论】:

【参考方案3】:

您已经制作了字典的副本并对其进行了更改,这不会影响用户默认对象中的原始副本。

将字典设置回用户默认对象应该可以解决问题:

[[NSUserDefaults standardUserDefaults] setObject:userMut forKey:@"User Detail"];

【讨论】:

以上是关于无法更新 NSUserDefaults 中字典的键值的主要内容,如果未能解决你的问题,请参考以下文章

使用字典的键更新值

使用常量 NSString 作为 NSUserDefaults 的键

如何更新字典,以便如果键'a'的值为'c'而不是'c'的键,则附加值'a'?

python合并两个字典的内容,使用update方法

字典值无法通过在django模板中使用相应的键进行迭代[重复]

在 NSUserDefaults 中存储字典并使用存储的数据。