如果我的 plist 字典数组不存在(appDidFinishLaunching),它会从捆绑包复制到文档目录。
字典中的某些字符串是用户定义的,并且在用户设置值之前具有默认值。(即Key:“Favorite”值:如果添加到收藏夹,“No”变为“Yes”)
如果我更改某些字典中的某些字符串(例如,如果对象的价格发生更改)和/或向数组添加一些新字典,如何在不更改用户定义字符串的情况下管理这些更改?
我想过两个选择:
1:将现有字典中的字符串与更新字典中的字符串进行比较,并在不触及用户定义的字符串的情况下替换更改的字符串。还要寻找新的词典。
2:为用户定义的字符串创建一个新的字典plist,即“Name”字符串等于主对象,以便在显示内容时它们可以“连接”。然后可以替换主plist和用户定义的数据保持不变。
我认为 nr 2 将是最简单的方法。但这是我的第一个应用程序,所以我不确定..
所以我的问题是:选项2是个好方法吗?如果是,则接受确认作为答案。如果不是,我想这是因为您看到了一些潜在的麻烦,如果不是 nr 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];
}
}