对于我的下一个版本,我大大改变了 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.}"
)}