如何备份/恢复应用程序的用户首选项

时间:2012-02-18 12:41:49

标签: iphone objective-c xcode nsuserdefaults

我正在尝试将我的应用程序数据和用户首选项(存储在NSUserDefaults中)备份为电子邮件附件,并可选择在以后恢复它们。

我只是通过将文件的内容附加到电子邮件中,使我的应用程序数据文件的流程正常工作,但无法确定如何为用户首选项执行等效操作。 “设置”分发包中的Root.plist仅包含设置界面的模板,而不包含当前设置的模板。

将设置读入我自己的plist并将其保存到文档目录是一个选项,但似乎不够优雅且过于复杂。有没有更好的办法?

3 个答案:

答案 0 :(得分:1)

参见本教程

http://iphonebyradix.blogspot.in/2011/03/read-and-write-data-from-plist-file.html

要阅读用户默认值,请使用此方法

-(id)getFromNSUserDefaults:(NSString*)pForKey
{
    id pReturnObject;
    NSUserDefaults *defaults =[NSUserDefaults standardUserDefaults];
    pReturnObject = [defaults valueForKey:pForKey];
    return pReturnObject;
}

答案 1 :(得分:1)

我不会去寻找存储NSUserDefaults的plist,因为它没有直接暴露给API,因此是一个可以随时更改的实现细节。

相反,

[[NSUserDefaults standardUserDefaults] dictionaryRepresentation]

会为您提供NSDictionary,其中包含您应用已存储的所有键值对。

答案 2 :(得分:0)

  

将设置读入我自己的plist并将其保存到文档目录是一个选项,但似乎不够优雅且过于复杂。还有更好的方法吗?

鉴于没有直接支持你想要的官方API(我知道),我发现编写几行创建你自己的.plist文件的代码并不是很复杂。请参阅yuji的答案作为起点:只需一行,您已经拥有了一个包含所需设置的字典。它能变得多么优雅? : - )

这可能不是您希望听到的答案,但我的建议是:不要试图打击系统,从长远来看,您通常会失败。