Исключение с NumberFormatter, использующим .spellout в Swift - PullRequest
0 голосов
/ 18 марта 2019

Я тестирую некоторые строки, такие как одна, две, три, семь и т. Д., Чтобы увидеть, являются ли они числами, используя код ниже.Это работает нормально, если строка на самом деле является числом, но падает, когда строка не является числом, как в слове «сбережения».

Весь смысл метода состоит в том, чтобы выяснить, можно ли представить строкукак число, поэтому я не знаю, как исключить случаи, когда это не так - если это действительно проблема.Я думаю, что это проблема, но я думаю, что я также мог что-то упустить, так как я слаб в опционах.Строка, на которой я запускаю эту строку, которая выдает ошибку, является словом «сбережения».

Вот мой код:

public extension NSString {
    public var asNum: NSNumber {
               // let stringValue = String(value: self)
                let stringValue = self
                let formatter = NumberFormatter()
                formatter.isLenient = true
                formatter.numberStyle = .spellOut
                let num = formatter.number(from: stringValue as String)!///EXCEPTION
                return num
            }
        }

Исключение гласит:

Неустранимая ошибка: неожиданно обнаружен ноль при развертывании необязательного значения

В отладчике я могу убедиться, что stringValue является "экономией"

Спасибо за любые предложения.

...