Ios 当用户键入逗号而不是点时,我的应用程序崩溃?
好的,我正在创建一个货币转换器应用程序。 当用户输入他想要转换的值,并用逗号而不是点键入“9,99”时,应用程序崩溃。 我怎么能阻止它 这是我的密码:Ios 当用户键入逗号而不是点时,我的应用程序崩溃?,ios,swift,xcode,mobile,Ios,Swift,Xcode,Mobile,好的,我正在创建一个货币转换器应用程序。 当用户输入他想要转换的值,并用逗号而不是点键入“9,99”时,应用程序崩溃。 我怎么能阻止它 这是我的密码: @IBAction func changeSteemTextField(_ sender: UITextField) { let str = steemTextField.text if (str?.isEmpty)! { return } let appDelegate = UIApplicati
@IBAction func changeSteemTextField(_ sender: UITextField) {
let str = steemTextField.text
if (str?.isEmpty)! {
return
}
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let steem = NumberFormatter().number(from: str!)?.doubleValue
priceTextField.text = String(format: "%.4f", steem! * appDelegate.price_usd * rate)
}
@IBAction func changePriceTextField(_ sender: UITextField) {
let str = priceTextField.text
if (str?.isEmpty)! {
return
}
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let price = NumberFormatter().number(from: str!)?.doubleValue
steemTextField.text = String(format: "%.0f", price! / appDelegate.price_usd / rate)
return
这是当您键入逗号而不是点时弹出的错误消息
所以我的想法是实现一个替换代码?
这样,一旦用户键入一个点,系统就会自动用逗号替换它。
这是我提出的代码,但为什么它不起作用
let aString = ","
let newString = aString.replacingOccurrences(of: ",", with: ".")
为了使其工作,您需要将
let str.
更改为var str
,然后更改值。此代码运行良好:
var str = "99.5"
let aString = ","
str = str.replacingOccurrences(of: ",", with: ".")
let price = NumberFormatter().number(from: str)?.doubleValue
为了使其工作,您需要将
let str.
更改为var str
,然后更改值。此代码运行良好:
var str = "99.5"
let aString = ","
str = str.replacingOccurrences(of: ",", with: ".")
let price = NumberFormatter().number(from: str)?.doubleValue
应用程序崩溃,因为NumberFormatter()一次只能设置为一个语言环境。在本例中,它被设置为US,因此它希望逗号仅用于分隔数千、数百万等(例如9999)。因此,9,99是无效的数字表示形式
您需要更改str,并确保str的更改值(用点替换逗号的值)作为输入。请注意,如果有人输入欧洲格式的数字9999.01(即9.999,01),则此操作将失败。在这种情况下,您将明确需要为两个语言环境调用NumberFormatter,或者编写更详细的转换逻辑。应用程序崩溃,因为NumberFormatter()一次只能设置为一个语言环境。在本例中,它被设置为US,因此它希望逗号仅用于分隔数千、数百万等(例如9999)。因此,9,99是无效的数字表示形式
您需要更改str,并确保str的更改值(用点替换逗号的值)作为输入。请注意,如果有人输入欧洲格式的数字9999.01(即9.999,01),则此操作将失败。在这种情况下,您将明确需要为这两个地区调用NumberFormatter,或者编写更详细的转换逻辑。什么是
汇率
?@MaxPevsner汇率取决于货币,例如美元:case“USD”:label.text=“$”+price\u kind rate=1.0“不起作用”是什么问题?发布包含replacingOccurrences
的非工作代码。检查price
、appDelegate.price_usd
和rate
是否都有值,并且不是nil
或0。我的建议是不要用点替换逗号。您应该显示无效输入警报,以提醒用户他输入的内容无效。因为,如果用户想要转换9999.99,该怎么办。您不能将此处的逗号转换为点。汇率是多少?@MaxPevsner汇率取决于货币,例如美元:case“USD”:label.text=“$”+price\u kind rate=1.0“不起作用”是什么问题?发布包含replacingOccurrences
的非工作代码。检查price
、appDelegate.price_usd
和rate
是否都有值,并且不是nil
或0。我的建议是不要用点替换逗号。您应该显示无效输入警报,以提醒用户他输入的内容无效。因为,如果用户想要转换9999.99,该怎么办。这里的逗号不能转换成点。