0
我有一個關於這個答案的問題:https://stackoverflow.com/a/29783546/2529173語言環境 - 確定是否數量將小數進行格式化,或不
它的偉大工程,但在我的應用我需要的用戶選擇/改變自己的貨幣。我試圖設置這樣的語言環境,如下所示:
class CurrencyField: UITextField {
override func awakeFromNib() {
super.awakeFromNib()
addTarget(self, action: #selector(editingChanged), for: .editingChanged)
keyboardType = .numberPad
textAlignment = .right
editingChanged()
}
func editingChanged() {
Formatter.currency.locale = Locale(identifier: "es_CL")
text = Formatter.currency.string(from: (Double(string.numbers.integer)/100) as NSNumber)
}
}
struct Formatter {
static let currency = NumberFormatter(numberStyle: .currency)
}
extension UITextField {
var string: String { return text ?? "" }
}
extension String {
var numbers: String { return components(separatedBy: Numbers.characterSet.inverted).joined() }
var integer: Int { return Int(numbers) ?? 0 }
}
struct Numbers { static let characterSet = CharacterSet(charactersIn: "") }
extension NumberFormatter {
convenience init(numberStyle: NumberFormatter.Style) {
self.init()
self.numberStyle = numberStyle
}
}
我這是因爲NumberFormatter不輸出此貨幣的小數。有沒有辦法得到這項工作?
是,你確實是看到一個小數(時不應該有一個)的問題,或者你*不*看小數(時應該)? –
在其他貨幣中,例如EUR,有一個小數,應該有一個。但是對於「es_CL」,似乎數字格式化爲無小數,所以代碼不起作用,因爲它將數字除以100,當您輸入「3」時,會給出格式爲「$ 0」的「0,03」 」。所以代碼不起作用,因爲新號碼永遠不會被設置。所以我不知何故需要確定一個語言環境是否會顯示小數 – user2529173
@LeoDabus是的我試圖做到這一點,但我無法確定這一點。你知道嗎?我的意思是如何檢查區域設置 – user2529173