自从我上一个问题以来,我一直在尝试让 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?)
覆盖?这是它不起作用的原因吗?任何形式的帮助将不胜感激。