核心数据轻量级迁移:无法查找或自动推断迁移的映射模型

els*_*udo 7 iphone core-data core-data-migration ios mapping-model

所以我创建了一个新版本的数据模型,并使之前的可选字段非可选(给它一个默认值).根据文档,这应该意味着我的迁移符合轻量级自动迁移的条件.

我还添加了允许这样做的选项,当我打开商店时,也按照文档:

NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:

[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,

[NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];
Run Code Online (Sandbox Code Playgroud)

但是,当我的应用程序启动时,我收到以下错误:

"无法找到或自动推断迁移的映射模型".

有谁知道这里的问题是什么?任何帮助表示赞赏...谢谢!

wes*_*der 2

您可能已经看过这个,但如果没有……检测轻量级核心数据迁移

就其他调试代码而言,我发现这很有帮助:

NSURL *storeUrl = [NSURL fileURLWithPath: [[self applicationDocumentsDirectory] stringByAppendingPathComponent: @"MyDataStore.sqlite"]];

NSError *error = nil;
NSDictionary *sourceMetadata = [NSPersistentStoreCoordinator metadataForPersistentStoreOfType:NSSQLiteStoreType URL:storeUrl error:&error];

if (!sourceMetadata)
{
    DLog(@"sourceMetadata is nil");
}
else
{
    DLog(@"sourceMetadata is %@", sourceMetadata);
}
Run Code Online (Sandbox Code Playgroud)

最后,这有点痛苦,但在 Finder 中,您可以为您的应用程序“显示包内容”,然后找到一个名为 .momd 的文件夹,其中有一个名为“VersionInfo.plist”的文件。这有助于确定您拥有什么以及您想要去哪里。

最后,您可以尝试创建一个映射模型,看看是否有效。我已经与迁移问题搏斗了好几个星期,因此有一长串绝望的调试尝试。