刚刚将项目转换为Swift 3并且无法找出以下错误 .
public func currencyString(_ decimals: Int) -> String {
let formatter = NumberFormatter()
formatter.numberStyle = .currency
formatter.maximumFractionDigits = decimals
return formatter.string(from: NSNumber(self))!
}
返回行显示错误“Argument labels'(_ :)'与任何可用的重载都不匹配”
知道需要改变什么来解决这个问题
4 回答
你可以这样做:
澄清关于错误是什么的混淆,
NSNumber正在调用
NSNumber.init( value: X )
方法来实例化NSNumber对象 ."Argument labels '(_:)' do not match any available overloads"
代码产生错误,因为NSNumber不是类型,而是具有成员的类 .
"NSNumber(...)"
实例化一个类对象以包含(1.0 / 1.29)
的(1.0 / 1.29)
.This is not a type conversion or cast like in C/C++. 您正在尝试 cast 类型以允许编译器完成其工作 .
NSNumber不是像
int, float, char
这样的类型该错误发挥作用,因为有几种方法可以调用
NSNumber.init( value: type )
Swift要求你明确地说你希望NSNumber的'value'成员包含值x .
混乱可能会发挥作用,因为这是有效的 .
类String不需要参数标签,而NSNumber确实需要参数标签'value:'
也许这是因为IOS如何将NSNumber视为来自传统?
那这个呢?
Swift 3.0.1
syntex之间的区别