2011-05-03 153 views
1

已经有一些堆栈溢出的轻量级迁移问题,但其中大多数在混合中都有额外的扳手。我正在做最基本的迁移,并且失败了。过去几次我没有做过这样的事情,所以这变得非常令人沮丧。感觉这可能是Xcode 4的一个问题,在使用Core Data时这很糟糕。轻量级迁移失败

我有我的旧模型版本(实际上是一些旧版本)和标记为活动的新版本。我已经设置了两个选项布尔值,自动迁移并推断:

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

我的最后一个活动的模式和我的新的唯一区别是一个新的属性(日期),这是可选的。据我所知,一个新的可选属性不应该导致轻量级迁移的任何问题。

我运行的应用程序,我得到“无法找到或自动推断映射模型迁移”这似乎是荒谬的。只有一个变化 - 它是可选的!

我缺少什么?这一定是愚蠢的。

+0

也许你们中的一个模特不是你正在跑步的目标的成员? – sgosha 2011-05-03 20:04:07

回答

1

如您所述,只需添加一列不应引起该错误。例如,如果取消设置可选字段(CoreData然后不知道如何处理现有的NULL值)或更改字段类型,通常会引发此错误。这不是你的情况。你可能不小心点击某处...

要诊断发生了什么,请用你的@try{}@catch{}代码,我想你已经在做,并给看看逮住异常e.userInfo财产,大部分时间CoreData提供有关的所有细节是什么引起了错误,比如哪个Field,哪个原因......这可能有帮助!

您也可以简单地删除最后的模型版本并重新创建它,因为只有一个小的变化。

+0

在尝试解决问题而没有成功(包括删除模型并重新创建几次)之后,我最终放弃了并做了我需要做的事情,而无需更改数据库模型。我仍然会将此标记为答案,因为对于试图调试愚蠢的核心数据问题的任何人肯定会有一些有用的信息。 – 2011-05-05 19:03:26

+0

我讨厌当有人(包括我)需要像这样死去的时候,你能粘贴来自Core Data Exception的userInfo,那里*必须*有一些有趣的东西!如果没有,向苹果公司提交的错误报告应该有所帮助无论如何,谢谢你接受我的答案。 – 2011-05-05 20:35:08