将字符串转换为数字,格式;除非无法强制转换,否则string = string

时间:2016-03-16 18:26:20

标签: swift casting conditional

变量benefit.amount以字符串形式出现。

var amount = String()
if let tempAmount = benefit.amount as? NSDecimalNumber {
    amount = Formatter.currencyFormat(tempAmount)
} else {
    amount = tempAmount
}

我想要做的就是如果benefit.amount类似于1000,我可以在其上使用货币格式化程序。有时虽然该变量可能看起来像Included in Policy Year Maximum Benefit,但显然无法将其变成数字。

请告知。

2 个答案:

答案 0 :(得分:1)

尝试将值转换为Int。初始化程序在失败时返回nil

let amount : String
if let tempAmount = Int(benefit.amount) {
    amount = Formatter.currencyFormat(tempAmount)
} else {
    amount = benefit.amount
}

答案 1 :(得分:1)

您必须使用init(string:)方法并将结果与​​NSDecimalNumber.notANumber()进行比较:

let decimal = NSDecimalNumber(string: benefitAmount)
if decimal == NSDecimalNumber.notANumber() {
  // handle not a number
}
else {
  // handle the number
}