Swift:滑块值和数字字符串转换

时间:2017-01-05 02:58:18

标签: swift

我正在使用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

请说明如何纠正这两个问题。

感谢。

4 个答案:

答案 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)
    }