Stack Overflow上已经有一些Lightweight Migration问题,但大多数都有额外的扳手。我正在进行最基本的迁移,但它失败了。我过去曾多次这样做,没有任何问题,所以这令人非常沮丧。感觉这可能是Xcode 4的一个问题,在使用Core Data时这很糟糕。
我有我的旧版本(实际上是一些旧版本)和一个标记为活动的新版本。我有两个选项布尔值设置,自动迁移和推断:
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];
我上一个活动模型与新模型之间的唯一区别是一个新属性(Date)是可选的。据我所知,一个新的可选属性不应该导致轻量级迁移的任何问题。
我运行应用程序,我得到“无法找到或自动推断迁移的映射模型”,这似乎很荒谬。只有一个变化 - 它是可选的!
我错过了什么?它一定是蠢事。
答案 0 :(得分:1)
正如您所说,只添加一列不应该引发该错误。例如,在取消设置可选字段(CoreData然后不知道如何处理现有NULL值)或更改字段类型时,通常会引发此错误。哪不是你的情况。你可能不小心点击了某个地方......
要诊断正在发生的事情,请使用@try{}@catch{}
围绕您的代码,我猜你已经在做了,并查看catched Exception e.userInfo
属性,大多数情况下CoreData
给出所有有关导致错误的原因的详细信息,例如哪个字段,哪个理由......这可能会有所帮助!
您也可以简单地删除最后一个模型版本并重新创建它,因为只有一个小的变化。