文本字段中的十进制数

时间:2016-10-21 17:08:53

标签: ios swift

我正在尝试从文本字段中获取十进制数字。它只能是一个十进制数,但是如果我输入类似'o,5'的东西,那么子弹的产生速度会比每0.5秒快一些。

我的代码:

@IBAction func enemyBulletDelayClick(_ sender: AnyObject) {
    dismissKeyboard()

    let correctNumber = enemyBulletDelayText.text?.replacingOccurrences(of: ",", with: ".")
    enemyBulletDelay = Double(correctNumber!)!
    enemyBulletDelayText.text = ""
}

(我将每个','转换成'。'代表十进制数。) 否则会给我一个错误。

2 个答案:

答案 0 :(得分:0)

如果你有?你需要打开,而不是放!

有很多方法可以删除。然后。选择你想要的任何东西这更专注于你正在做的事情的过程,然后你可以决定使用NSNumberFormatter或你想做什么。

guard let enemyBulletDelayString = enemyBulletDelayText.text? else {
    //put whatever you want to do here if this check doesn't pass
    return
}

let numberFormatter = NumberFormatter()
formatter.numberStyle = numberFormatter.Style.decimal

if let formattedNumber = numberFormatter.number(from: enemyBulletDelayString) {
  enemySpawnDelay = formattedNumber.doubleValue
} else {
  numberFormatter.decimalSeparator = ","
  if let formattedNumber = numberFormatter.number(from: enemyBulletDelayString) {
  enemySpawnDelay = formattedNumber.doubleValue
  }
}

这应该与你想做的事情一起工作。

答案 1 :(得分:0)

我尝试使用此代码并且有效!

代码:

let formatter = NumberFormatter()
formatter.numberStyle = NumberFormatter.Style.decimal

enemySpawnDelay = (formatter.number(from: enemySpawnDelayText.text!)?.doubleValue)!