Objective c 在我的应用程序的下一个版本之前更改plist-如何管理更改?
如果我的plist字典数组不存在,它将从包复制到documents目录(appDidFinishLaunching) 字典中的某些字符串是用户定义的,在用户设置值之前具有默认值。(即:键:“收藏夹”值:如果添加到收藏夹,则“否”更改为“是”) 如果我更改了某些字典中的某些字符串(如对象的价格发生变化)和/或向数组中添加了一些新字典,如何在不更改用户定义字符串的情况下管理这些更改 我考虑过两种选择: 1:将激活词典中的字符串与更新词典中的字符串进行比较,并在不接触用户定义字符串的情况下替换已更改的字符串。还可以寻找新的词典 2:为用户定义的字符串创建一个新的字典列表,即“名称”字符串等于主对象,以便在显示内容时可以“连接”。。然后可以替换主plist,用户定义的数据保持不变 我认为NR2是最简单的方法。但这是我的第一份申请,所以我不确定 所以我的问题是:选择2是一个好办法吗?如果是,则接受确认作为答案。如果没有,我想这是因为你看到了一些潜在的问题,请解释,如果不是nr 1,可能建议其他的方法 Ps.副本的当前代码:Objective c 在我的应用程序的下一个版本之前更改plist-如何管理更改?,objective-c,Objective C,如果我的plist字典数组不存在,它将从包复制到documents目录(appDidFinishLaunching) 字典中的某些字符串是用户定义的,在用户设置值之前具有默认值。(即:键:“收藏夹”值:如果添加到收藏夹,则“否”更改为“是”) 如果我更改了某些字典中的某些字符串(如对象的价格发生变化)和/或向数组中添加了一些新字典,如何在不更改用户定义字符串的情况下管理这些更改 我考虑过两种选择: 1:将激活词典中的字符串与更新词典中的字符串进行比较,并在不接触用户定义字符串的情况下替换已更改的
- (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分钟内接受答案……:)