iOS NSUserDefaults plist文件正在丢失更改

时间:2014-04-06 02:38:20

标签: ios iphone ipad plist reset

我们正面临一个不寻常的情况,我的应用程序的plist会自动设置为默认值,主要是在重启ipad / iphone之后。关于为什么会发生这种情况的任何想法?

我们正在读这样的plist

[[NSUserDefaults standardUserDefaults] registerDefaults:[AppSetting globalConfig]];

+ (NSDictionary *) globalConfig {
    NSString* plistPath = [[NSBundle mainBundle] pathForResource:@"settings" ofType:@"plist"];
    return [[[NSDictionary alloc] initWithContentsOfFile:plistPath] autorelease];
}

保存后我们用

写下来
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];   
[defaults setBool:self.isLogIn forKey:@"isLogin"];
[[NSUserDefaults standardUserDefaults] synchronize];

更多编辑...... 这与自动恢复有什么关系吗?我在ipads中看到这条线已经恢复了。

<Error>: HID: The 'Passive' connection 'appName' access to protected services is denied.
<Error>: HID: The 'Rate Controlled' connection 'appName' access to protected services is denied.

1 个答案:

答案 0 :(得分:1)

您的应用正在写信给NSUserDefaults而没有调用synchronize。该应用程序进入后台,并因某些原因崩溃(或者只是彻底崩溃) - 所以更改意味着保存到NSUserDefaults永远不会,并且看起来你的plist文件在它从未保存时会恢复。它可能会以不允许保存NSUserDefaults更改的方式关闭设备以杀死应用程序。

或者您是否在不经过NSUserDefaults的情况下写入NSUserDefaults plist文件?别这么做。

或者测试人员正在使用相同的iCloud帐户在多个设备上进行测试,这两个设备正在为您的应用程序设备之间同步UserDefaults plist文件。

修改:为什么要从只读应用套件中读取设置并使用NSUserDefaults保存更改?他们不会做同样的事情。你永远不会读小麦NSUserDefaults正在写作。

相关问题