【问题标题】:Objective-C : Can't set NSMutableDictionary from NSUserDefaultsObjective-C:无法从 NSUserDefaults 设置 NSMutableDictionary
【发布时间】:2017-09-24 00:32:20
【问题描述】:

我正在尝试检索保存到 NSUserDefaults 的 NSDictionary。当我注销我要检索的内容时,它会正确显示:

NSLog(@"%@", [[[NSUserDefaults standardUserDefaults] dictionaryForKey:@"userdetails"] mutableCopy]);

但是,当我尝试分配给一个变量时,它返回为 nil。

NSMutableDictionary *test123 =  [[[NSUserDefaults standardUserDefaults] dictionaryForKey:@"userdetails"] mutableCopy];

知道为什么吗?

【问题讨论】:

  • “它返回为零”是什么意思?
  • 这两行是一个接一个,还是在代码中的两个不同位置?
  • test123 = nil after 'NSMutableDictionary *test123 = [[[NSUserDefaults standardUserDefaults] dictionaryForKey:@"userdetails"] mutableCopy];'
  • @rmaddy 一个接一个。如果没有日志,分配也无法工作,我只是将其添加到测试
  • 如果添加NSDictionary *dict = [[NSUserDefaults standardUserDefaults] dictionaryForKey:@"userdetails"]; 会怎样。是nil吗?

标签: ios objective-c nsdictionary nsuserdefaults


【解决方案1】:

检查我的工作代码,

像这样保存,

NSData *data = [NSKeyedArchiver archivedDataWithRootObject:yourMutableDictionary];

[[NSUserDefaults standardUserDefaults] setObject:data forKey:@"currentUser"];
[[NSUserDefaults standardUserDefaults]synchronize];

获取字典,

 NSData *dictionaryData = [[NSUserDefaults standardUserDefaults] objectForKey:@"currentUser"];
 NSDictionary *tempDict = [NSKeyedUnarchiver unarchiveObjectWithData:dictionaryData];

【讨论】:

    【解决方案2】:

    也许您可以使用以下代码进行尝试: [[NSUserDefaults standardUserDefaults] setObject:(NSDictionary *)yourDictionary forKey:yourkey];

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-27
      • 2010-10-03
      • 2017-08-30
      • 1970-01-01
      相关资源
      最近更新 更多