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:无法从完成块内部检索数据