web-dev-qa-db-fra.com

Swift extraire une valeur Int, Float ou Double d'une chaîne (conversion de type)

S'il vous plaît pourriez-vous m'aider ici? J'ai besoin de comprendre comment convertir une chaîne en un Int, un Float ou un Double! Ce problème survient lorsque j'essaie d'obtenir la valeur d'un UITextField et que ce type de conversion est nécessaire!

Je faisais ça comme ça:

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

mais depuis Xcode 6 beta 6, il ne semble plus fonctionner! 

J'ai aussi essayé comme ça:

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)

Aidez-moi s'il vous plaît ou dites-moi où je peux trouver la réponse! Merci beaucoup!

9
365Cases

Convertissez String en NSString et utilisez des méthodes pratiques:

var str = "3.1"

To Int

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

Flotter

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

Doubler

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


Référence

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

Utilisation:

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

Lesquels renvoient un optionnel qui est nil s'il ne parvient pas à analyser la chaîne . Par exemple:

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

Bien sûr, vous pouvez forcer le déballage si vous êtes sûr:

var foo = Double("5.0")!

Chaîne extensible

Si vous effectuez cette opération à plusieurs endroits et que vous souhaitez que la gestion des erreurs soit traitée de la même manière, vous pouvez étendre la variable String à l'aide de méthodes de conversion:

Par exemple:

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
        }
    }
}

et ensuite l'utiliser:

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