我已经阅读了关于Core Data模型的自动/轻量级迁移的文档 - 但是在实现它的过程中遇到了问题.
据我所知,应用程序应该注意到它所拥有的模型和设备上存在的模型已经不一样了.如果您只添加了属性或关系以及类似的简单更改,则应自动升级模型.
任何指针 - 我需要在xCode中设置一些东西吗?
Gro*_*hal 138
我现在发现这很简单 - 一旦你知道在哪里看.
在我的AppDelegate中,我设置了NSPersistentStoreCoordinator - 你需要为此添加一些选项来告诉它处理自动迁移:
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
[NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];
NSError *error;
_persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel: [self managedObjectModel]];
if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:options error:&error]) {
// Handle error
NSLog(@"Problem with PersistentStoreCoordinator: %@",error);
}
Run Code Online (Sandbox Code Playgroud)
然后你需要在xCode中做一个小技巧:
这看起来很棒,也很简单 - 但我觉得在更改模型时需要在开发过程中小心 - 否则你将不得不为每次更改创建一个新版本.
我想我会做的是保留所有已更改的文件,然后一旦我准备部署我的更新,我将删除所有中间文件,并使用最旧和最新的模型进行部署.
更新(2011年7月15日):
感谢@ rockstarberlin指出苹果的更新文档:
更新:2013年8月19日更好的链接:
Sco*_*ans 13
这非常有帮助.苹果文档 - 像往常一样 - 非常不完整.我建议做一个干净的构建,因为当我在进行这些更改后第一次运行时遇到错误"无法将模型与两个不同的实体xxx合并".干净的构建修复了它.
| 归档时间: |
|
| 查看次数: |
32349 次 |
| 最近记录: |