不止一次将值写入.plist?

时间:2012-08-19 19:32:51

标签: iphone ios plist

我正在使用iPhone应用程序,我在应用程序中有一个设置页面。我使用.plist存储用户选择的设置,然后我稍后从.plist中读取数据。这不是创建项目时随附的-Info.plist,而是另一个plist文件。当我在编码后测试设置时,它起作用了。该设置能够被读取,这是我使用的正确设置。但是,我回到了同一个应用程序会话中的设置,并更改了相同的设置。当我去应用程序看它是否读取新设置时,它只使用旧的(第一个)。我再次尝试,但它产生了相同的结果。我只能写一次设置,我不能'重写'或'覆盖'相同的设置。我无法弄清楚我的生活有什么不妥。

1 个答案:

答案 0 :(得分:2)

您无法覆盖或写入应用包本身中的文件。如果要写入文件,应首先将其复制到应用程序的Library或Documents目录,如下所示:

NSString *docsDir = [NSSearchPathsForDirectoriesInDomains(NSDocumentsDirectory, NSUserDomainMask) objectAtIndex:0];
NSString *plistFile = @"myplist.plist";
NSString *plistInBundle = [[NSBundle mainBundle] pathForResource:plistFile ofType:nil];
NSString *plistInDocsDir = [docsDir stringByAppendingPathComponent:plistFile];
[[NSFileManager defaultManager] copyItemAtPath:plistInBundle toPath:plistInDocsDir error:NULL];
// now `plistInDocsDir` is (over)writeable

但是,要存储应用的偏好设置,最好使用NSUserDefaults类:

[[NSUserDefaults standardUserDefaults] setObject:@"Some string" forKey:@"MySettingKey"];

和/或为您的应用创建Preference Bundle