从 String 转换为 Double 导致 Swift 崩溃
Converting to Double from String causing crash in Swift
我正在尝试转换文本字段的文本,由于十进制数字键盘,它只能是数字。
我正在使用的变量:
static var selectedMoneyMissing: Double = 30.0
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
formatter.maximumFractionDigits = 2
formatter.roundingMode = .down
let roundedReplacing = formatter.string(from: NSNumber(value: Double(textField.text!.replacingOccurrences(of: ",", with: "."))!))
let roundedReplacingSecond = roundedReplacing.replacingOccurrences(of: " ", with: "")
print(roundedReplacing)
print(roundedReplacingSecond)
FiltersViewController.selectedMoneyMissing = Double(roundedReplacingSecond)!
我收到 "unexpectedly found nil...." 错误:
仅当我输入值 >= 1000 时才会发生此错误。所以我认为这可能是因为空白,这就是 roundedReplacingSecond 变量存在的原因。但它仍然不起作用(实际上,我不知道为什么控制台打印变量 "roundedReplacingSecond" 带有空格?)。
您应该将 NumberFormatter
配置得更严格,尤其是禁止使用分组和千位分隔符:
formatter.groupingSeparator = false
formatter.hasThousandSeparator = false
有关更多属性,请参阅文档。那么根本不需要进行文本替换,根据用户的语言环境,这可能会中断。
我正在尝试转换文本字段的文本,由于十进制数字键盘,它只能是数字。
我正在使用的变量:
static var selectedMoneyMissing: Double = 30.0
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
formatter.maximumFractionDigits = 2
formatter.roundingMode = .down
let roundedReplacing = formatter.string(from: NSNumber(value: Double(textField.text!.replacingOccurrences(of: ",", with: "."))!))
let roundedReplacingSecond = roundedReplacing.replacingOccurrences(of: " ", with: "")
print(roundedReplacing)
print(roundedReplacingSecond)
FiltersViewController.selectedMoneyMissing = Double(roundedReplacingSecond)!
我收到 "unexpectedly found nil...." 错误:
仅当我输入值 >= 1000 时才会发生此错误。所以我认为这可能是因为空白,这就是 roundedReplacingSecond 变量存在的原因。但它仍然不起作用(实际上,我不知道为什么控制台打印变量 "roundedReplacingSecond" 带有空格?)。
您应该将 NumberFormatter
配置得更严格,尤其是禁止使用分组和千位分隔符:
formatter.groupingSeparator = false
formatter.hasThousandSeparator = false
有关更多属性,请参阅文档。那么根本不需要进行文本替换,根据用户的语言环境,这可能会中断。