【发布时间】:2019-04-06 19:28:22
【问题描述】:
我正在尝试进行自定义迁移,按照找到的说明 here,更改属性名称和类型,但它似乎没有运行映射。
旧模型有一个属性名称“roundDrill”,它是一个布尔值。新模型删除了这个,并添加了一个名为“drillType”的新属性,它是一个字符串。
我有一个名为“V2V3.xcmapingmodel”的映射模型,其中实体有一个自定义策略集“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 根本没有被打印出来。如果我更改自定义策略名称,它不会给我一个错误,所以看起来好像它被完全忽略了
【问题讨论】:
-
如果您错过了您链接到的 Tom Harrington 说明中的第 5 步,您的自定义策略实施将被忽略。或者,也许您将自定义策略类名称输入到错误实体的属性检查器中。请检查这些。
-
该政策已存在且名称正确。
-
您是否尝试在链接到的说明中添加
@objc标记,如 noobular 的答案?它不在您发布的代码中。 -
我试过有无,没有区别。即使我故意在方法名称中打错字,也不会抛出错误
标签: xcode core-data core-data-migration