$ интервал перестает работать через 5 и более минут в IONIC1, когда приложение работает в фоновом режиме

Для немного более быстрого ощущения, используя NSFormatter(), избегает кастинга NSString и возвращает nil, когда строка не содержит значения Double (например, «тест» не вернет 0.0).

let double = NSNumberFormatter().numberFromString(myString)?.doubleValue

Альтернативно, расширяя тип String Swift:

extension String {
    func toDouble() -> Double? {
        return NSNumberFormatter().numberFromString(self)?.doubleValue
    }
}

и используйте его как toInt():

var myString = "4.2"
var myDouble = myString.toDouble()

Это возвращает необязательно Double?, который необходимо развернуть.

Либо с принудительной разверткой:

println("The value is \(myDouble!)") // prints: The value is 4.2

, либо с помощью инструкции if let:

if let myDouble = myDouble {
    println("The value is \(myDouble)") // prints: The value is 4.2
}

Update : Для локализации очень легко применять локали к NSFormatter следующим образом:

let formatter = NSNumberFormatter()
formatter.locale = NSLocale(localeIdentifier: "fr_FR")
let double = formatter.numberFromString("100,25")

Наконец, вы можете использовать NSNumberFormatterCurrencyStyle в форматировании, если работаете с валютами, где строка содержит валюту символ.

0
задан zums 5 March 2019 в 11:53
поделиться