我正在使用首选项(plist)来保存用户信息。此文件存储在应用程序的首选项文件夹中。对于某些登录用户,此首选项文件在关闭ipad并在第二天早上重新启动时将恢复为默认值。 任何想法或想法为什么会发生这种情况。
我们正在读这样的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 :(得分:0)
我确定你正在编写bundle中的plist文件.Apple文档说 “建议在签署应用程序代码后修改您的软件包内容”。当您再次构建应用程序时,默认plist文件将覆盖您在项目中拥有它的内容。
您应该将默认plist文件复制到文档目录并访问它以进行写入。当您从设备删除应用程序时,这甚至会消失。
要将plist复制到文档目录,请按照
进行操作NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *txtPath = [documentsDirectory stringByAppendingPathComponent:@"settings.plist"];
if ([fileManager fileExistsAtPath:txtPath] == NO) {
NSString *resourcePath = [[NSBundle mainBundle] pathForResource:@"settings" ofType:@"plist"];
[fileManager copyItemAtPath:resourcePath toPath:txtPath error:&error];
}