2012-02-18 56 views
3

我想实现(在存储NSUserDefaults的)我的应用程序的数据和用户偏好的备份作为电子邮件附件选择在稍后的日期,以恢复它们的用户的喜好。如何备份/恢复我的应用程序

我已经得到了处理工作正常,我的应用程序的数据文件简单地通过附加文件的电子邮件的内容,但不能工作了怎么办用户偏好的等价物。设置包中的Root.plist仅包含设置界面的模板,不包含当前的设置。

阅读设置成我自己的plist并保存该文档目录是一个选项,但似乎不雅,过于复杂。有没有更好的办法?

回答

1

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

相反,

[[NSUserDefaults standardUserDefaults] dictionaryRepresentation] 

会给你一个NSDictionary包含所有键值你的应用程序已经存储了对。

+0

谢谢!这正是我要找的东西。它看起来像很多值不是特定于应用程序的,所以当我从备份还原数据时,我不能只更新NSUserDefaults中的所有值。 – 2012-02-18 16:24:10

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; 
} 
+0

谢谢哈德利,但问题是我找不到包含NSUserDefaults设置的plist – 2012-02-18 12:59:42

+0

对于用户默认设置,您不需要访问.plist文件,您可以直接访问它们 – HarshIT 2012-02-18 13:00:44

+0

同意,但我试图将整个plist对象作为整体或其所在的文件进行备份而不读取它 – 2012-02-18 13:02:56

0

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

由于没有官方的API(据我所知)直接支持你想要什么,我觉得很优雅,不是很复杂,写的几行代码是创建自己的.plist文件。查看yuji的答案是一个起点:只需一行,并且您已经有一本包含所有您想要的设置的字典。它可以获得多少优雅? :-)

这可能不是您希望听到的答案,但我的建议是:不要试图与系统作斗争,您通常会长期失败。