1

自从我上一个问题以来,我一直在尝试让 ValueTransformer 将 NSSlider 的值转换为整数。

背景:我有一个绑定到共享用户默认控制器的 NSSlider。文本标签也使用相同的键绑定到共享用户默认控制器。我需要文本字段只显示 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
    }
}

对于这两者,NSLider 和我在 bindingsInspector 中设置的标签是 Value Transformer on IntegerTransformmer

在 AppDelegate 中,我像这样初始化 ValueTransformer:

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

    }

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

4

0 回答 0