Ios 尝试将字符串转换为货币,结果出现致命错误

Ios 尝试将字符串转换为货币,结果出现致命错误,ios,swift,currency-formatting,Ios,Swift,Currency Formatting,我试图创建一个简单的函数,将字符串转换为用户的本地货币 我有一个函数如下所示: func decimalFormat(stringNumber:String) -> Decimal{ print("\(stringNumber) is the number being passed") let numberFormatter = NumberFormatter() numberFormatter.numberStyle = .currency let num

我试图创建一个简单的函数,将字符串转换为用户的本地货币

我有一个函数如下所示:

func decimalFormat(stringNumber:String) -> Decimal{
    print("\(stringNumber) is the number being passed")
    let numberFormatter = NumberFormatter()
    numberFormatter.numberStyle = .currency
    let number = numberFormatter.number(from: stringNumber)
    print("\(number!) is the number")

    let amount = number?.decimalValue
    return amount!
}
由于某些原因,在展开可选值时,我得到了意外发现的nil

第一次打印工作正常,并将传入函数的内容返回给我

decimalFormat("5.4")
print("\(stringNumber) is the number being passed") -> 5.4
所以我认为错误来自这一行,只是不确定为什么,因为我不认为有一个可选的值可以打开:

let number = numberFormatter.number(from: stringNumber)

5.4
不是有效的货币字符串。货币字符串具有货币符号。如果要分析非货币数字字符串,请使用
.decimal
作为
numberStyle
。由于强制展开一个nil变量,因此崩溃发生在第2行
print
。不要这样做。请用您期望的函数输入和输出更新您的问题。该函数当前返回一个十进制数,但它不是格式化的货币。或者,您正在尝试从一种货币转换为另一种货币?您的问题不清楚。
5.4
不是有效的货币字符串。货币字符串具有货币符号。如果要分析非货币数字字符串,请使用
.decimal
作为
numberStyle
。由于强制展开一个nil变量,因此崩溃发生在第2行
print
。不要这样做。请用您期望的函数输入和输出更新您的问题。该函数当前返回一个十进制数,但它不是格式化的货币。或者,您正在尝试从一种货币转换为另一种货币?你的问题不清楚。