NumberFormatter в Xcode 11 - PullRequest
       30

NumberFormatter в Xcode 11

0 голосов
/ 10 октября 2019

Я боролся с прошлых нескольких часов. Мой код работал в Xcode 10.XX. После того, как я обновился до xcode 11, numberFormatter перестал работать, и теперь я не могу получить число из строкового значения. Приведенный ниже код дает мне 552 € в xcode 10 и ноль в xcode 11. Может кто-нибудь помочь мне понять, в чем проблема?

    let currencyFormatter = NumberFormatter()
    currencyFormatter.usesGroupingSeparator = true
    currencyFormatter.numberStyle = .currency

    currencyFormatter.locale = Locale(identifier: "de_DE")
    if let priceString = currencyFormatter.number(from: "552") {
        print(priceString) // Should Display 552 € in the German locale
    }

1 Ответ

1 голос
/ 10 октября 2019

Проблема в том, что вы используете NumberFormatter с numberStyle из currency для преобразования строки, содержащей обычное число - "552" - которая не является строкой валюты. Это не работает.

Вы должны использовать стиль decimal для преобразования строки в число. После этого вы можете использовать стиль currency для преобразования числа обратно в строку.

let formatter = NumberFormatter()
formatter.locale = Locale(identifier: "de_DE")

// string to number
formatter.numberStyle = .decimal
if let n = formatter.number(from: "552") {
    print(n) // prints "552"

    // number to string (formatted as currency)
    formatter.numberStyle = .currency
    if let s = formatter.string(from: n) {
        print(s) // prints "552,00 €"
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...