Iphone 如何为备份目的保存/加载NSUserDefaults?

Iphone 如何为备份目的保存/加载NSUserDefaults?,iphone,objective-c,ios,cocoa-touch,Iphone,Objective C,Ios,Cocoa Touch,加载和保存NSUserDefaults时,此代码是否正确 // Load NSDictionary *dict = [[NSUserDefaults standardUserDefaults] dictionaryRepresentation]; // Save NSDictionary *dict = .... NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

加载和保存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
//加载
NSDictionary*dict=[[NSUserDefaults standardUserDefaults]
字典表示法];
//拯救
NSDictionary*dict=。。。。
NSUserDefaults*默认值=[NSUserDefaults standardUserDefaults];
[默认注册表默认值:dict];
[默认同步] 加载代码将为您提供所有当前默认值的字典

[注意:这可能比您预期的要大得多,因为Mac OS安装了大量默认值,您可能希望将其缩小。例如,您可以使用以下命令将字典限制为仅限于域中与其注册默认值不同的默认值:

NSDictionary *userDefaults = [[NSUserDefaults standardUserDefaults] persistentDomainForName:@"<your bundle identifier>"];

上面的代码只是一个大纲,您可能需要注意保存/恢复的首选项以及顺序,但这一切都取决于您的应用程序。

我唯一关心的是,保存时它使用setobject,而我在某些地方也使用seinteger,这会将对象覆盖两者。既然如此,为什么要将setinteger设置为setobject w您可以这样做。
NSUserDefaults
后面的数据结构存储对象,通过读取文件创建的
NSDictionary
也存储对象,因此使用
setObject:
。对于整数值,实际存储的对象是
NSNumber
setInteger
,以及其他基本类型setters和Getter是一种方便的方法,可以将原始值从/包装为对象。
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];