我需要保存一些简单的应用程序设置并选择使用plist。
在搜索stackoverflow和其他资源后,我发现最常用的模式是使用字典进行读写。 所以我试图在plist中保存应用程序配置数据,但它们不会永久保存。
这是为“保存配置”按钮实现的代码 (当然有一个带有“initialURL”键的“config.plist”文件)
- (IBAction) saveButtonTapped
{
NSString *plistfile = [[NSBundle mainBundle] pathForResource:@"config" ofType:@"plist"];
NSMutableDictionary *dict =[NSMutableDictionary dictionaryWithContentsOfFile:plistfile];
[dict setValue:initialURL.text forKey:@"initialURL"];
[dict writeToFile:plistfile atomically:YES];
}
在writeToFile:plistfile之后,在UITextField中写入的名为initialURL的值在右键中写入,如果重新加载相同的键我得到更新的值,但是如果我退出应用程序并重新启动它,则值为initialURL丢失了。
为什么会这样?期望“writeToFile”实际写入文件是否有任何错误(对我来说,如果我写入文件数据是永久存储的,则文件是永久存储)。
弗朗西斯
答案 0 :(得分:1)
更改
[dict setValue:initialURL.text forKey:@"initialURL"];
到
[dict setObject:initialURL.text forKey:@"initialURL"];
此外,您无法写入您的软件包,您需要将文件复制到应用程序的文档文件夹。
答案 1 :(得分:0)
如果是配置设置等,您可以使用NSUserDefaults来存储设置。 You can read about it here
答案 2 :(得分:0)
首次运行应用时,将config.plist复制到Documents文件夹。
NSString *plistfile = [[NSBundle mainBundle] pathForResource:@"config" ofType:@"plist"];
NSString* documentPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
[NSFileManager defaultManager] copyItemAtPath:plistfile toPath:documentPath error:nil];
然后访问
- (IBAction) saveButtonTapped
{
NSString *plistfile = [[NSBundle bundleWithPath:[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]] pathForResource:@"config" ofType:@"plist"];
NSMutableDictionary *dict =[NSMutableDictionary dictionaryWithContentsOfFile:plistfile];
[dict setValue:initialURL.text forKey:@"initialURL"];
[dict writeToFile:plistfile atomically:YES];
}