此代码加载和保存 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 来保存字典内容,但遇到了问题。 在我在其他地方寻找问题之前,我只想知道这段代码是否正确。
最佳答案
您的Load代码将为您提供所有当前默认值的字典。
[注意这可能比您预期的要大得多,因为 Mac 操作系统安装了大量默认值,您可能希望将其缩小。例如,您可以使用以下方法将字典限制为域中与注册默认值不同的默认值:
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];
上面的代码只是一个轮廓,您可能需要注意保存/恢复哪些首选项以及按什么顺序 - 但这一切都取决于您的应用程序。
关于iphone - 如何保存/加载 NSUserDefaults 以进行备份?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8582779/