核心数据自定义策略的select器语法是什么?
我正在尝试使用Core Data实现非常基本的自定义迁移。 一个属性最初被创build为Integer 16
,值为0或1.在新的模型版本中,该属性被更改为Boolean
,下面的迁移策略应该处理它。 我已经看到了几个用Swift编写的例子,他们似乎没有使可访问性打开/公开,或者添加@objc
使其可以被Objective-C访问。 我已经这样做了,以消除任何不工作的原因。
我已经使用以下expression式为实体映射创build了具有自定义策略的映射模型。
FUNCTION($entityPolicy, "convertInteger:" , $source.active)
它保持失败,因为select器不被识别。 具体来说,它会得到以下错误。
unrecognized selector sent to instance
我已经尝试了很多变化。
- convertInteger:
- 转换(整数:)
- convertInteger(_ 🙂
我无法获得任何变化的工作。 什么是这个expression式的有效select器?
在Swift代码中,我把一个断言在初始化,它通过,但我不能在策略的expression式中使用相同的select器。
import CoreData @objc open class IntegerToBooleanMigrationPolicy: NSEntityMigrationPolicy { @objc public override init() { super.init() assert(responds(to: #selector(convert(integer:))), "Policy does not respond to selector!") } @objc open func convert(integer: Int16) -> Bool { debugPrint("Converting \(integer) to boolean") return integer == 1 } }
将代码片段粘贴到Swift REPL之后,我评估了以下expression式:
20> #selector(IntegerToBooleanMigrationPolicy.convert(integer:)) $R1: Selector = "convertWithInteger:"
这表明convertWithInteger:
是你应该在映射expression式中使用的select器。