我正在使用Swift练习TipCalculator应用程序。斯威夫特是我的新语言。由于Xcode 6.0的演示代码与Xcode 8不匹配,因此存在两个问题。
没有。 1问题:参数标签'(整数:)'不匹配任何可用的重载。
let sliderValue =
NSDecimalNumber(integer: Int(customTipPercentageSlider.value))
没有。 2问题:键入' NumberFormatter'没有号码' CurrencyStyle'
func formatAsCurrency(number: NSNumber) -> String {
return NumberFormatter.localizedStringFromNumber(
number, numberStyle: NumberFormatter.CurrencyStyle)
}
请参阅以下网站链接中的源代码。 http://www.informit.com/articles/article.aspx?p=2273069&seqNum=6
请说明如何纠正这两个问题。
感谢。
答案 0 :(得分:0)
回答#1:
如果要将Float(slider.value类型)转换为Int,只需对其进行类型转换。
let sliderValue = Int(customTipPercentageSlider.value)
回答#2:
我认为你在这里寻找Swift 3语法。
func formatAsCurrency(number: NSNumber) -> String {
return NumberFormatter.localizedString(from: number, numberStyle: .currency)
}
答案 1 :(得分:0)
我很高兴把代码如下。关于最后一行代码,Xcode显示二进制运算符'/'不能应用于'Int'和'NSDeimalNumber'类型的操作数
@IBAction func calculateTip(_ sender: Any) {
func sliderValueChanged(_ sender: Any) {
}
let inputString = inputTextField.text // get the user input
let sliderValue = Int(customTipPercentageSlider.value)
let customPercent = sliderValue / decimal100
答案 2 :(得分:0)
除了@ dfd的答案之外,我建议使用Double
类型而不是NSDecimalNumber
,因为它更容易转换为Int
。因此,如果您像这样初始化decimal100
变量:
var decimal100: Double = Double()
然后您可以使用以下代码:
let inputString = inputTextField.text // get the user input
let sliderValue = Int(customTipPercentageSlider.value)
let customPercent = Double(sliderValue) / decimal100
答案 3 :(得分:-1)
let sliderValue =
NSDecimalNumber(integer: Int(customTipPercentageSlider.value))
您收到此错误,因为NSDecimalNUmber没有整数的初始化程序。 swift 3中提供的初始化程序是:
init(decimal: Decimal)
init(mantissa: UInt64, exponent: Int16, isNegative: Bool)
init(string: String?)
init(string: String?, locale: Any?)
参考:https://developer.apple.com/reference/foundation/nsdecimalnumber
您可以使用此功能在swift中格式化货币
func formatAsCurrency(number: NSNumber) -> String {
return NumberFormatter.localizedString(from: number, number: .currency)
}