7

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

我还根据文档添加了允许在打开商店时执行此操作的选项:

NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:

[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,

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

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

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

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

4

1 回答 1

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

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

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

于 2010-10-27T23:23:55.533 回答