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

时间:2010-10-25 03:51:57

标签: iphone ios core-data core-data-migration mapping-model

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

我还添加了允许在打开商店时使用此选项的选项:

NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:

[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,

[NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];

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

  

“无法找到或自动推断迁移的映射模型”。

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

1 个答案:

答案 0 :(得分:2)

您可能已经看过这个,但如果没有...... Detecting a Lightweight Core Data Migration

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

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);
}

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

最后,您可以尝试创建一个映射模型,看看它是否有效。几周以来,我一直在努力解决迁移问题,因此需要进行一系列绝望的调试尝试。