我知道你已经得到了答案,但是我想解释一下可能不太简单的部分。
首先,我们有一些NSData需要转换为NSString,因为没有人保证数据是有效的UTF8缓冲区,它会返回一个可选项。
var variable = NSString(data:data, encoding:NSUTF8StringEncoding)
这意味着什么:
variable: NSString?
通常情况下,
NSString
会被桥接到Swift的
String
,但在这种情况下,我们使用了一个
NSString
构造函数——您可以将其视为一种“Foundation”式的语法,而该语法并未直接导入到Swift中(因为没有
NSData
的桥接)。
我们仍然可以使用
NSString
的“Foundation”方式。
if let unwrappedVariable = variable {
var number = unwrappedVariable.intValue
}
如果
number
是一个
Float
,但字符串是整数的字符串表示形式。
if let unwrappedVariable = variable {
var number: Float = Float(unwrappedVariable.intValue)
}
如果number
和字符串(其表示为)都是浮点数:
if let unwrappedVariable = variable {
var number:Float = unwrappedVariable.floatValue
}
无论如何,使用Foundation存在一个小问题。对于这些类型的转换,它没有可选值的概念(对于int、float)。如果它不能将字符串解析为整数或浮点数,它将返回0。这就是为什么最好使用Swift本地String
的原因:
if let variable: String = NSString(data: data, encoding: NSUTF8StringEncoding) {
if let integer = variable.toInt() {
var integerNumber = integer
var floatNumber = Float(integer)
}
}