的NumberFormatter参数标签“(_ :)”不匹配任何可用的重载

问题描述:

沿着这条的NumberFormatter参数标签“(_ :)”不匹配任何可用的重载

lable2xValue.text = numberFormatter.string(from: value) 

首先,它是引发此错误

无法将类型的价值“双师型”预期参数类型 '的NSNumber'

然后Xcode的建议valueNSNumber

更换
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) 

编译器要

numberFormatter.string(from: NSNumber(value:value)) 

遗憾的是它并不表明。

快速提示NSNumber⌘点击看到在申报文件中提供的初始化。


或者在在Xcode 8.1的最新版本的雨燕也可以投桥到DoubleNSNumber

numberFormatter.string(from: value as NSNumber) 
+0

哇我已经决定接受你的答案,但我需要采取几分钟。谢谢解答更新已答复 –

您需要添加的第一个参数标签valueNSNumberinit

lable2xValue.text = numberFormatter.string(from: NSNumber(value: value)) 
+0

感谢您的回答 –

+0

@cristanlika欢迎伴侣:) –