自定义CoreData-Migration不使用默认值

时间:2016-11-11 09:08:26

标签: ios core-data core-data-migration

对于我的下一个版本,我大大改变了 CoreData-Model ,因此我决定使用自定义迁移。

我自己完成了迁移工作,但是当我尝试使用映射模型而不是类的迁移策略时,迁移通过说(bool / NSNumber)值而崩溃,这是可选的之前和现在都没有,但是有一个已定义的默认值,为零。

自定义迁移策略确实有效,因为我检查了旧值是否存在:

if let attribute = sInstance.value(forKey: "attribute") as? NSNumber
{
     dInstance.attribute = attribute
}
else
{
     dInstance.attribute = NSNumber(value: false)
}

但如果我使用这样的映射模型:

 attribute = $source.attribute

它崩溃了。

有什么建议吗?

修改

这个错误:

UserInfo={NSDetailedErrors=(
    "Error Domain=NSCocoaErrorDomain Code=1570 \"attribute is a required value.\" UserInfo={NSValidationErrorObject=<NSManagedObject: 0x191906f0> (entity: Entity; id: 0x17da96a0 <x-coredata://18E7FEF2-9E09-4EF4-98AA-EC641305E39F/Entity/p2> ; data: <fault>), NSValidationErrorKey=attribute, NSLocalizedDescription=attribute is a required value.}",
    "Error Domain=NSCocoaErrorDomain Code=1570 \"attribute is a required value.\" UserInfo={NSValidationErrorObject=<NSManagedObject: 0x17f00710> (entity: Entity; id: 0x191898f0 <x-coredata://18E7FEF2-9E09-4EF4-98AA-EC641305E39F/Entity/p1> ; data: <fault>), NSValidationErrorKey=attribute, NSLocalizedDescription=attribute is a required value.}"
)}

0 个答案:

没有答案