核心数据迁移自定义迁移

时间:2019-04-06 19:28:23

标签: xcode core-data core-data-migration

我正在尝试按照here找到的说明进行自定义迁移,更改属性名称和类型,但似乎没有运行映射。

旧模型的属性名称为“ roundDrill”,它是一个布尔值。新模型已删除,并添加了一个名为String的新属性“ drillType”。

我有一个名为“ V2V3.xcmappingmodel”的映射模型,其中该实体具有一个自定义策略集“ Diamond_Painting_Logbok.V2V3”。新属性的值为“ FUNCTION($ entityPolicy,” roundToType:“,$ source.roundDrill)”

在“ V2V3.swift”中,我有以下代码

import UIKit
import CoreData

class V2V3: NSEntityMigrationPolicy {
    func roundToType(isRound:NSNumber) -> String {
        NSLog("Round: \(isRound)")
        if isRound.boolValue {
            return "Round"
        } else {
            return "Square"
        }
    }
}

当我打印出drillType的值时,我得到的是nil。 完全不打印该功能上的NSLog。如果我更改了自定义策略名称,它不会给我一个错误,因此看起来好像它被完全忽略了

1 个答案:

答案 0 :(得分:0)

所以在与苹果公司交谈后,我发现了问题的原因,这是因为我没有V1到V2的型号,只有V2到V3的型号。否则,所有映射模型都将被忽略,

他们还说,该映射未正确运行,因为它崩溃了,尽管“正确的选择器已发送给实例”,但它是错误的。

他们建议使用createDestinationInstances作为解决方法,因此需要弄清楚这一点