9

我按照此处找到的指南进行操作: http ://www.timisted.net/blog/archive/core-data-migration/ 但是当我使用新模型启动应用程序时,不断收到“找不到用于迁移的映射模型” . 我已经在 xcode 3 和 xcode 4 中多次尝试过,但永远无法让它工作。

目前我的选项设置为:

NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
    [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
    [NSNumber numberWithBool:NO], NSInferMappingModelAutomaticallyOption,
    nil];

我之前为 infer 选项设置了 YES,但它只是在迁移时没有调用我需要迁移的自定义策略,我认为这是因为它之前也找不到映射模型。

我的映射模型没有被拾取的任何原因?我已经通过对照它的 SVN 版本检查了以前的模型,并仔细检查了它没有对它进行任何更改。

谢谢。

4

4 回答 4

8

事实证明,映射模型需要成为 .xcdatamodeld 包的一部分,这在 xcode 4 中是不可能做到的。有了它,它工作得很好。

注意:我的映射文件再次停止工作,我发现它在磁盘上是 0KB,所以我不得不重新创建它,之后它工作正常。我很快提交了它,看看它是否会再次消失。问题是 Xcode 4 索引它或其他东西,所以它在 xcode 中看起来不错,但在文件系统上它是空的。

原因请参见下面的评论(xcode 4 的 mapc(地图编译器)已损坏)。

** 这已在较新的 XCODE/SDK 中得到修复。**

于 2011-03-21T18:09:01.090 回答
4

我有一个类似的问题:

我的 xcmappingmodel 中的自定义策略将不会被执行

就我而言,它没有执行,因为我的迁移没有对表进行任何更改 - 也许这也是你的问题。

于 2011-06-27T12:33:35.377 回答
2

确保将源数据模型设置为您的旧版本,并将目标设置为新版本......当这些是倒退时,我得到了上面的错误。

于 2011-05-06T22:40:56.027 回答
0

您需要创建架构的新版本,而不是更改当前版本。假设您已经这样做了,对模型进行了哪些更改?有些变化太剧烈而无法可靠推断。

于 2011-03-20T22:03:51.617 回答