如何在plist中永久保存数据

时间:2011-10-13 16:54:55

标签: objective-c ios4

我需要保存一些简单的应用程序设置并选择使用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”实际写入文件是否有任何错误(对我来说,如果我写入文件数据是永久存储的,则文件是永久存储)。

弗朗西斯

3 个答案:

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