遵循这一行
lable2xValue.text = numberFormatter.string(from: value)
首先是抛出此错误
无法将'Double'类型的值转换为预期的参数类型'NSNumber'
然后Xcode建议value
替换为NSNumber
lable2xValue.text = numberFormatter.string(from: NSNumber(value))
当我这样做时,此错误显示
参数标签'(_ :)'与任何可用的重载都不匹配
这是我的完整代码
//computed property
var value2x : Double? {
if let value = value1x{
return (value * 2)
}
else{
return nil
}
}
//objerver
var value1x : Double? {
didSet{
updateLabel2xValue()
}
}
func updateLabel2xValue(){
if let value = value2x {
//lable2xValue.text = "\(value)"
//MARK:- ERORR Cannot convert value of type 'Double' to expected argument type 'NSNumber'
//lable2xValue.text = numberFormatter.string(from: value)
//MARK:- ERROR Argument labels '(_:)' do not match any available overloads
lable2xValue.text = numberFormatter.string(from: NSNumber(value))
}
else {
lable2xValue.text = "???"
}
}
var numberFormatter : NumberFormatter = {
let ls = NumberFormatter()
ls.numberStyle = .decimal
ls.minimumFractionDigits = 0
ls.maximumFractionDigits = 2
return ls
}()
@IBAction func textField1xValueEditingChange(_ sender: AnyObject) {
//print(self.textField1xValue.text)
if let value = self.textField1xValue.text , let doubleValue = Double(value){
value1x = doubleValue
}else{
value1x = nil
}
}
注意:如果我正在尝试这种方式,那么它工作正常
lable2xValue.text = numberFormatter.string(from: 50.33)
答案 0 :(得分:6)
编译器想要
NSNumber
不幸的是,它并没有暗示这一点。
快速提示:{kbd>在Double
点击以查看声明文件中的可用初始值设定项。
或者在Xcode 8.1中当前版本的Swift中,你也可以将演员NSNumber
桥接到numberFormatter.string(from: value as NSNumber)
value
答案 1 :(得分:3)
您需要添加init
NSNumber
的第一个参数标签lable2xValue.text = numberFormatter.string(from: NSNumber(value: value))
。
elseSwitch.onImage = UIImage(named: "switchOff")
elseSwitch.offImage = UIImage(named: "switchOff")