如何获取新的.plist数据

时间:2014-02-16 20:19:01

标签: ios plist

我正在使用此代码从本地(在XCode项目中).plist文件中读取数据。

NSError *error;
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *path = [documentsDirectory stringByAppendingPathComponent:@"GameData.plist"];

    NSFileManager *fileManager = [NSFileManager defaultManager];

    if (![fileManager fileExistsAtPath: path])
    {
        NSString *bundle = [[NSBundle mainBundle] pathForResource:@"GameData" ofType:@"plist"];

        [fileManager copyItemAtPath:bundle toPath: path error:&error];
    }

    gameData = [[NSMutableDictionary alloc] initWithContentsOfFile: path];

它开始起作用很棒,但现在我发现当我在模拟器中单步执行我的游戏时,我的游戏正在使用一开始就存在的.plist文件的版本,以及我设置的新字段我的新GameData.plist文件中没有出现。

我认为这是因为如果文件已经存在,它不会再次获取数据?但是,我如何获得新版本的.plist文件?我尝试删除if语句,但是我收到运行时错误,说文件已经存在。

1 个答案:

答案 0 :(得分:0)

听起来您需要设置版本系统。但是,将文件从软件包复制到文档文件夹的唯一原因是您可以编辑它,因此您需要考虑如何合并软件包中的更新文件和文档文件夹中的用户添加项。

一旦你有了合并文件的计划,那么你可以改变你的if语句,这样它不仅可以检查文件是否已经存在(如果已经存在,你需要删除它才能更换它)还考虑了版本。您可能希望将当前复制的版本号存储在用户默认值中,并将版本号添加到捆绑包中的文件中。您可能还希望将用户修改后的数据保存在不同的文件中,并将其用作覆盖。