此代码是否正确加载并保存NSUserDefaults。
// Load
NSDictionary *dict = [[NSUserDefaults standardUserDefaults]
dictionaryRepresentation];
// Save
NSDictionary *dict = ....
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults registerDefaults:dict];
[defaults synchronize]; << Not sure if this is needed
我正在使用JSON来保存字典内容而我遇到了问题。 我想知道这段代码是否正确,然后再去别处寻找我的问题。
答案 0 :(得分:1)
您的加载代码将为您提供所有当前默认值的字典。
[注意这可能会比您预期的要大得多,因为Mac OS安装了大量默认设置,您可能希望将其缩小。例如,您可以将字典限制为域中与其注册默认值不同的默认值:
NSDictionary *userDefaults = [[NSUserDefaults standardUserDefaults] persistentDomainForName:@"<your bundle identifier>"];
结束记录]
您的保存代码可能无法达到预期效果,它会将您要还原的值安装为这些键的默认值 - 因此,如果您支持“还原到默认设置“,或类似的东西,然后这些是将导致的值。您可能想要做的是设置键的当前值,这可以通过一个简单的循环来完成:
NSDictionary *dict = ....
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
foreach(id key in dict)
[defaults setObject:[dict objectForKey:key] forKey:key];
上面的代码只是一个大纲,您可能需要注意保存/恢复的首选项以及顺序 - 但所有这些都取决于您的应用程序。
答案 1 :(得分:0)
// Get
NSDictionary *dict = [[NSUserDefaults standardUserDefaults] objectForKey:@"myDictionary"];
// Set
NSDictionary *dict = ...
[[NSUserDefaults standardUserDefaults] setObject:dict forKey:@"myDictionary"];