NumberFormatter 参数标签 '(_:)' 不匹配任何可用的重载
Posted
技术标签:
【中文标题】NumberFormatter 参数标签 \'(_:)\' 不匹配任何可用的重载【英文标题】:NumberFormatter Argument labels '(_:)' do not match any available overloadsNumberFormatter 参数标签 '(_:)' 不匹配任何可用的重载 【发布时间】:2016-11-24 11:07:50 【问题描述】:沿着这条线
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)
【问题讨论】:
【参考方案1】:编译器想要
numberFormatter.string(from: NSNumber(value:value))
不幸的是,它不建议这样做。
快速提示:⌘-单击 NSNumber
以查看声明文件中可用的初始化程序。
或者,在 Xcode 8.1 的当前 Swift 版本中,您还可以将 Double
桥接到 NSNumber
numberFormatter.string(from: value as NSNumber)
【讨论】:
哇,我已经决定接受你的回答,但我需要花几分钟时间。感谢更新回答【参考方案2】:您需要在NSNumber
的init
中添加第一个参数标签value
。
lable2xValue.text = numberFormatter.string(from: NSNumber(value: value))
【讨论】:
@cristanlika 欢迎朋友 :)以上是关于NumberFormatter 参数标签 '(_:)' 不匹配任何可用的重载的主要内容,如果未能解决你的问题,请参考以下文章
PHP 'NumberFormatter' 'SPELLOUT' 没有提供所需的英文格式