Objective-C:无法从 NSUserDefaults 设置 NSMutableDictionary

Posted

技术标签:

【中文标题】Objective-C:无法从 NSUserDefaults 设置 NSMutableDictionary【英文标题】:Objective-C : Can't set NSMutableDictionary from NSUserDefaults 【发布时间】: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吗? 【参考方案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];

【讨论】:

以上是关于Objective-C:无法从 NSUserDefaults 设置 NSMutableDictionary的主要内容,如果未能解决你的问题,请参考以下文章

无法从 nib 实例化 UIView。 “警告:无法加载任何 Objective-C 类信息”

InAppPurchase 插件无法从 Objective-C 执行 JS 回调

无法从 Swift 代码访问 Objective-C 单例的数组

项目在 Swift 中时无法从 Objective-C 访问 swift 类

无法从我的 Objective-C 代码向 Google Analytics/Firebase 发送自定义事件

iOS Objective-C AFNetworking dataTaskWithRequest:completionHandler:无法从完成块内部检索数据