[英]How to save / Load NSUserDefaults for backup purposes?
此代码是否正确以加载和保存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来保存字典内容,但出现了问题。 我只是想知道这段代码是否正确,然后再在别处查找我的问题。
您的加载代码将为您提供所有当前默认值的字典。
[ 注意这可能会比您预期的要大得多,因为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];
上面的代码仅是概述,您可能需要注意保存/恢复哪些首选项以及按什么顺序进行,但是所有这些取决于您的应用程序。
// Get
NSDictionary *dict = [[NSUserDefaults standardUserDefaults] objectForKey:@"myDictionary"];
// Set
NSDictionary *dict = ...
[[NSUserDefaults standardUserDefaults] setObject:dict forKey:@"myDictionary"];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.