我正在尝试从文本字段中获取十进制数字。它只能是一个十进制数,但是如果我输入类似'o,5'的东西,那么子弹的产生速度会比每0.5秒快一些。
我的代码:
@IBAction func enemyBulletDelayClick(_ sender: AnyObject) {
dismissKeyboard()
let correctNumber = enemyBulletDelayText.text?.replacingOccurrences(of: ",", with: ".")
enemyBulletDelay = Double(correctNumber!)!
enemyBulletDelayText.text = ""
}
(我将每个','转换成'。'代表十进制数。) 否则会给我一个错误。
答案 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)!