iphone - 将 NSDictionary 保存到 NSUserDefaults

我有一个 NSMutableDictionary,并且我已经向它添加了值(几个 key 对值)。现在我需要将此 NSMutableDictionary 保存到 NSUserDefaults 对象。

1.) 我的代码如下;我不确定它是否正确,而且我需要知道如何从 NSUSerDefault 中检索 NSMutableDictionary ?

2.) 检索 NSMutableDictionary 后,我需要将其保存到 NSDictionary。我怎么能做到这些?

NSMutableDictionary *dic = [[NSMutableDictionary  alloc] init];

[dic addObject:@"sss" forKey:@"hi"];
[dic addObject:@"eee" forKey:@"hr"];

 [NSUserDefaults standardDefaults] setObject:dic forKey:@"DicKey"];
 [[NSUserDefaults standardDefaults] synchronize];

最佳答案

您的代码是正确的,但您必须记住的一件事是 NSUserDefaults 不区分可变对象和不可变对象(immutable对象),因此当您取回它时,它将是不可变的:

NSDictionary *retrievedDictionary = [[NSUserDefaults standardUserDefaults] dictionaryForKey:@"DicKey"];

如果你想要一个可变字典,只需使用 mutableCopy:

NSMutableDictionary *mutableRetrievedDictionary = [[[NSUserDefaults standardUserDefaults] objectForKey:@"DicKey"] mutableCopy];

https://stackoverflow.com/questions/9947073/

相关文章:

objective-c - 对 block 进行类型定义是如何工作的

objective-c - Xcode:可以为协议(protocol)接口(interface)所需

iphone - 我的 iPhone Objective-C 代码如何在 UIWebView 中收到

ios - 如何在 iPhone 上显示来自 API 的 HTML 文本?

ios - 使用 Xcode 进行模拟时,PerformFetchWithCompletionHan

objective-c - 实现 -hash/-isEqual :/-isEqualTo. ..:用

objective-c - 核心数据 "use scalar properties for prim

objective-c - iOS 7 过度导航栏按钮填充

ios - 了解一对多的核心数据删除规则

ios - 不支持推送导航 Controller