it-roy-ru.com

Swift извлекает значение типа Int, Float или Double из строки (преобразование типов)

Пожалуйста, не могли бы вы помочь мне здесь? Мне нужно понять, как преобразовать строку в Int, Float или Double! Эта проблема возникает, когда я пытаюсь получить значение из UITextField и мне нужен этот тип преобразования!

Я делал это так:

var myValue : Float = myTextField.text.bridgeToObjectiveC().floatValue

но, начиная с Xcode 6 beta 6, похоже, он больше не работает! 

Я пробовал также так:

var str = "3.14"

// Conversion from StringValue to an Int
var intValue : Int = str.toInt()!

// Other converstion from StringValue to an Int
var intOtherValue : Int = Int(str)

// Converstion from StringValue to a Float
var floatValue : Float = str.bridgeToObjectiveC().floatValue

// Converstion from StringValue to a Double
var doubleValue : Double = Double(str)

Пожалуйста, помогите мне или скажите, где я могу найти ответ! Большое спасибо!

9
365Cases

Преобразуйте String в NSString и используйте удобные методы:

var str = "3.1"

Для Int

var intValue : Int = NSString(string: str).integerValue // 3

Держаться на плаву

var floatValue : Float = NSString(string: str).floatValue // 3.09999990463257

Удвоить

var doubleValue : Double = NSString(string: str).doubleValue // 3.1


Ссылка

var doubleValue: Double { get }
var floatValue: Float { get }
var intValue: Int32 { get }
@availability(OSX, introduced=10.5)
var integerValue: Int { get }
@availability(OSX, introduced=10.5)
var longLongValue: Int64 { get }
@availability(OSX, introduced=10.5)
27
Maxim Shoustin

Использование:

Int(string:String)
Double(string:String)
Float(string:String)

Который возвращает необязательный параметр, равный nil, если не удается проанализировать строку . Например:

var num = 0.0
if let unwrappedNum = Double("5.0") {
    num = unwrappedNum
} else {
    print("Error converting to Double")
}

Конечно, вы можете принудительно развернуть, если уверены:

var foo = Double("5.0")!

Расширяющаяся строка

Если вы делаете это более чем в нескольких местах и ​​хотите, чтобы обработка ошибок везде выполнялась одинаково, то вы можете расширить String методами преобразования:

Например:

extension String {
    func toDouble() -> Double {
        if let unwrappedNum = Double(self) {
            return unwrappedNum
        } else {
            // Handle a bad number
            print("Error converting \"" + self + "\" to Double")
            return 0.0
        }
    }
}

а затем использовать его:

let str = "4.9"
var num = str.toDouble()
4
floatingpoint
public extension String {
    public func toFloat() -> Float? {
        return Float.init(self)
    }

    public func toDouble() -> Double? {
        return Double.init(self)
    }
}
1
Tinvy
let strValue = "14.03"

let result = (strValue as NSString).floatValue
0
Ranjan
var holdTextFieldToStringValue = myTextField.text

//convert from string to Int

var holdIntValue = holdTextFieldToStringValue.toInt()!

//convert from string to Double

var holdDoubleValue = Double((holdTextFieldToStringValue as NSString).doubleValue)
0
bawasuru