Objective c 在我的应用程序的下一个版本之前更改plist-如何管理更改?

Objective c 在我的应用程序的下一个版本之前更改plist-如何管理更改?,objective-c,Objective C,如果我的plist字典数组不存在,它将从包复制到documents目录(appDidFinishLaunching) 字典中的某些字符串是用户定义的,在用户设置值之前具有默认值。(即:键:“收藏夹”值:如果添加到收藏夹,则“否”更改为“是”) 如果我更改了某些字典中的某些字符串(如对象的价格发生变化)和/或向数组中添加了一些新字典,如何在不更改用户定义字符串的情况下管理这些更改 我考虑过两种选择: 1:将激活词典中的字符串与更新词典中的字符串进行比较,并在不接触用户定义字符串的情况下替换已更改的

如果我的plist字典数组不存在,它将从包复制到documents目录(appDidFinishLaunching)

字典中的某些字符串是用户定义的,在用户设置值之前具有默认值。(即:键:“收藏夹”值:如果添加到收藏夹,则“否”更改为“是”)

如果我更改了某些字典中的某些字符串(如对象的价格发生变化)和/或向数组中添加了一些新字典,如何在不更改用户定义字符串的情况下管理这些更改

我考虑过两种选择:

1:将激活词典中的字符串与更新词典中的字符串进行比较,并在不接触用户定义字符串的情况下替换已更改的字符串。还可以寻找新的词典

2:为用户定义的字符串创建一个新的字典列表,即“名称”字符串等于主对象,以便在显示内容时可以“连接”。。然后可以替换主plist,用户定义的数据保持不变

我认为NR2是最简单的方法。但这是我的第一份申请,所以我不确定

所以我的问题是:选择2是一个好办法吗?如果是,则接受确认作为答案。如果没有,我想这是因为你看到了一些潜在的问题,请解释,如果不是nr 1,可能建议其他的方法

Ps.副本的当前代码:

- (void)copyPlist {
    NSError *error;
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *path = [documentsDirectory stringByAppendingPathComponent:@"Objects.plist"];
     NSLog(@"Path %@", path); 

    NSFileManager *fileManager = [NSFileManager defaultManager];

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

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

我认为选择2是你最好的选择。仅允许用户更改显示名称,而不允许用户更改用于属性的内部名称。否则,如果您在某个时候添加了另一个字段“Foo”,但用户已经将现有字段“Bar”重命名为“Foo”?

谢谢,那么我会选择它。并使它“安全”的情况下,像你的例子。将在5分钟内接受答案……:)