2016-11-24 67 views
1

沿着這條的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) 

回答

4

編譯器要

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

遺憾的是它並不表明。

快速提示NSNumber⌘點擊看到在申報文件中提供的初始化。


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

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

哇我已經決定接受你的答案,但我需要採取幾分鐘。謝謝解答更新已答覆 –

2

您需要添加的第一個參數標籤valueNSNumberinit

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

感謝您的回答 –

+0

@cristanlika歡迎伴侶:) –

相關問題