iOS Preference文件是否会自动重置为默认值

时间:2014-04-06 04:31:33

标签: ios iphone ipad plist

我正在使用首选项(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.

1 个答案:

答案 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];
}