我们正面临一个不寻常的情况,我的应用程序的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.
答案 0 :(得分:1)
您的应用正在写信给NSUserDefaults而没有调用synchronize
。该应用程序进入后台,并因某些原因崩溃(或者只是彻底崩溃) - 所以更改意味着保存到NSUserDefaults永远不会,并且看起来你的plist文件在它从未保存时会恢复。它可能会以不允许保存NSUserDefaults更改的方式关闭设备以杀死应用程序。
或者您是否在不经过NSUserDefaults的情况下写入NSUserDefaults plist文件?别这么做。
或者测试人员正在使用相同的iCloud帐户在多个设备上进行测试,这两个设备正在为您的应用程序设备之间同步UserDefaults plist文件。
修改:为什么要从只读应用套件中读取设置并使用NSUserDefaults
保存更改?他们不会做同样的事情。你永远不会读小麦NSUserDefaults
正在写作。