NumberFormatter参数标签'(_ :)'与任何可用的重载都不匹配

时间:2016-11-24 11:07:50

标签: ios swift swift3 nsnumberformatter

遵循这一行

 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)

2 个答案:

答案 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")