无法更新 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'?