我有一个 iPhone 应用程序正在开发中,并且我在应用程序中有一个设置页面。我使用 .plist 来存储用户选择的设置,然后我稍后从 .plist 中读取数据。这不是你创建项目时自带的-Info.plist,它是另一个plist文件。当我在编码后测试设置时,它起作用了。可以读取该设置,这是我使用的正确设置。但是,我回到同一个应用程序会话中的设置,并更改了相同的设置。当我去应用程序查看它是否读取了新设置时,它只使用了旧的(第一个)设置。我再次尝试,但结果相同。我只能编写一次设置,并且不能“重写”或“覆盖”相同的设置。我无法弄清楚我的生活出了什么问题。
问问题
79 次
1 回答
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 。
于 2012-08-19T19:37:18.270 回答