ValueTransformer中没有覆盖功能?

时间:2017-06-25 19:28:49

标签: swift macos cocoa binding nsvaluetransformer

自从上一个问题以来,我一直试图让ValueTransformer将NSSlider的值转换为Integer。

背景: 我有一个绑定到共享用户默认值控制器的NSSlider。 textlabel也使用相同的密钥绑定到共享用户默认控制器。我需要textfield才能显示Int。

现在我的代码看起来像这样:

class IntegerTransformmer: ValueTransformer {

    override class func transformedValueClass() -> AnyClass {
        return NSNumber.self
    }

    override class func allowsReverseTransformation() -> Bool {
        return true
    }

    // as far as I know, here is an override function required. But doing override in the following line, i´m getting error.
      func transformedValue(value: Any?) -> Int? {
        let int = value as! Int
        return int
    }
}

对于NSSlider和我在bindingsInspector中设置的标签IntegerTransformmer上的Value Transformer。

在AppDelegate中,我将ValueTransformer初始化为:

 override class func initialize() {
        let newTransformer = IntegerTransformmer()
        ValueTransformer.setValueTransformer(newTransformer, forName: NSValueTransformerName(rawValue: "IntegerTransformmer"))

    }

建筑工程没有错误,但在我的标签中,我仍然得到DoubleValues。 为什么我不允许transformedValue(value: Any?)作为覆盖? 这是它不工作的原因吗? 非常感谢任何形式的帮助。

0 个答案:

没有答案