Col*_*ber 8 migration iphone cocoa-touch core-data ios
我有一个使用CoreData的iPhone应用程序.我最近对数据模型做了一些小改动,现在每次打开应用程序时都会收到错误"无法找到源存储模型".
我有2个版本的数据模型,我所做的唯一更改是添加了一些字段.我正在按照这里最初工作的指南,然后就在今天,在添加一些额外的字段后,它会中断.所有其他字段都标记为可选,并且都具有默认值.迁移代码如下:
NSURL *storeUrl = [NSURL fileURLWithPath:[[self applicationDocumentsDirectory] stringByAppendingPathComponent:@"xxx.sqlite"]];
// migration options
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
[NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];
NSError *error = nil;
persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:options error:&error]) {
...
}
Run Code Online (Sandbox Code Playgroud)
在这里成功创建了managedObjectModel:
- (NSManagedObjectModel *)managedObjectModel {
if (managedObjectModel != nil) {
return managedObjectModel;
}
NSString *path = [[NSBundle mainBundle] pathForResource:@"DataModelName" ofType:@"momd"];
NSURL *momURL = [NSURL fileURLWithPath:path];
managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:momURL];
return managedObjectModel;
}
Run Code Online (Sandbox Code Playgroud)
我已经将该问题追溯到版本对于1个实体的不匹配.抛出的错误包括对实体的错误:
MyEntityName = <cc1456b7 b12d0d05 21930308 94ccc078 27a6c345 8847c738 e3a9ae7e 0be9535d>;
Run Code Online (Sandbox Code Playgroud)
但是应用程序包中的VersionInfo.plist中的哈希是:
MyEntityName = <fede6b59 462442d1 8fc98226 b9f8f745 3250dabd ee188248 cb97b1d0 8a74eef3>;
Run Code Online (Sandbox Code Playgroud)
VersionInfo.plist中没有任何其他实体带有散列<cc1456b7....>.
从链接的答案,
这看起来很棒,也很简单 - 但我觉得在更改模型时需要在开发过程中小心 - 否则你将不得不为每次更改创建一个新版本.
听起来你制作版本2,编辑版本2,运行应用程序,再次编辑版本2,然后再次运行应用程序.这不是很好; 您需要保存您希望能够打开的所有模型版本.这有点麻烦.
您可以做的是在应用版本之后命名所有模型,例如对应于版本的FooModel-1和FooModel-1.1,以及用于"开发"版本的FooModel-1.2d1,FooModel-1.2d2.在发布之前,您可以将FooModel-1.2d10重命名为FooModel-1.2并删除其他开发版本.
(或者我可能完全误读了这个问题;对不起.)
| 归档时间: |
|
| 查看次数: |
3816 次 |
| 最近记录: |