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)
пожалуйста, помогите мне или скажите мне, где я могу найти ответ! Много спасибо!
5 ответов
преобразование String
to NSString
и использовать удобные методы:
var str = "3.1"
В Int
var intValue : Int = NSString(string: str).integerValue
// 3
Плавать
var floatValue : Float = NSString(string: str).floatValue
/ / 3.0999990463257
Двойной
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)
использование:
Int(string:String)
Double(string:String)
Float(string:String)
который возвращает необязательный, который равен нулю, если он не может проанализировать строку. Например:
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()
public extension String {
public func toFloat() -> Float? {
return Float.init(self)
}
public func toDouble() -> Double? {
return Double.init(self)
}
}
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)