无法在NSUserDefaults中更新Dictionary的键值

时间:2013-11-14 10:25:55

标签: ios objective-c nsdictionary nsuserdefaults

我将数据从服务器URL保存到nsuserdefaults作为User Detail。

现在在某个时刻,我想更新用户详细信息的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"];

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

3 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:2)

尝试使用它时添加值:

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

您正在复制字典,然后对该副本不执行任何操作

答案 2 :(得分:2)

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

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

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