iOS NSUserDefaults plist文件正在失去改变

我们正面临一个不寻常的情况,我的应用程序的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]; 

一些更多的编辑…这与这个自动还原有任何关系。 我看到这个线的ipad谁是plist恢复..

 <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. 

您的应用程序正在写入NSUserDefaults而无需调用synchronize 。 应用程序进入背景,崩溃(或只是崩溃彻底) – 所以意味着保存到NSUserDefaults的变化永远不会,并且似乎你的plist文件正在恢复时,它从来没有保存。 它可能会closures设备,以不允许保存NSUserDefaults更改的方式closures应用程序。

或者你是否正在写入NSUserDefaults plist文件,而不经过NSUserDefaults? 不要这样做。

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

编辑:你为什么从只读应用程序包读取设置,并使用NSUserDefaults保存更改? 他们不会做同样的事情。 你永远不会读小麦NSUserDefaults正在写信给。