繁体   English   中英

如何保存/加载NSUserDefaults以进行备份?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM