Ios 如何使用Swift将NSString转换为整数?

Ios 如何使用Swift将NSString转换为整数?,ios,xcode,swift,nsstring,Ios,Xcode,Swift,Nsstring,我需要在Swift中将一个转换成一个整数:这是我正在使用的当前代码;它不起作用: var variable = (NSString(data:data, encoding:NSUTF8StringEncoding)) exampeStruct.otherVariable = (variable).intValue Variable是一个普通的变量,examplestuct是代码中其他地方的一个带有子变量otherVariable的结构 我希望它将examplestuct.otherVari

我需要在Swift中将一个转换成一个整数:这是我正在使用的当前代码;它不起作用:

 var variable = (NSString(data:data, encoding:NSUTF8StringEncoding))
 exampeStruct.otherVariable = (variable).intValue
Variable是一个普通的变量,examplestuct是代码中其他地方的一个带有子变量otherVariable的结构

我希望它将
examplestuct.otherVariable
设置为
NSString
int
值,但我得到以下错误:

"Cannot convert the expression's type () to type Float"

如何在Swift中将
NSString
转换为
int

在我看来,问题可能不是int转换,而是exampleStruct需要一个浮点

但是,如果这不是问题所在(当然,Swift的Xcode错误似乎更多地与行号有关,而不是与实际问题有关),那么类似的方法应该适合您

var ns:NSString = "1234"
if let i = (ns as String).toInt() {
    exampleStruct.otherVariable = i
}

您必须在那里打开2个选项,注意,我还将变量声明为String,并在那里添加“:String”。例如:

if let variable:String = NSString(CString:"1", encoding: NSUTF8StringEncoding) {
    if let otherVariable = variable.toInt() {
        println(otherVariable) // "1"
    }
} 
在您的情况下,您应该这样做:

if let variable:String = NSString(data: data, encoding: NSUTF8StringEncoding) {
    if let exampeStruct.otherVariable = variable.toInt() {
        println(exampeStruct.otherVariable) // "1"
    }
}

我知道你已经得到了你的答案,但我只想解释一下(我认为)什么可能不是小事

首先,我们有一些
NSData
我们想转换成
NSString
,因为没有人保证数据是有效的UTF8缓冲区,所以它返回一个可选的

 var variable = NSString(data:data, encoding:NSUTF8StringEncoding)
这意味着
变量:NSString?

通常,
NSString
被桥接到swift的
String
,但在这种情况下,我们使用
NSString
构造函数-您可以将其更多地视为一种类似“基础”的语法,而不是直接导入swift(因为
NSData
没有桥接)

对于
NSString

if let unwrappedVariable = variable {
    var number = unwrappedVariable.intValue
}
如果
number
Float
,但字符串是整数的字符串表示形式

if let unwrappedVariable = variable {
    var number: Float = Float(unwrappedVariable.intValue)
}
如果编号和字符串(的表示形式)都是浮点数:

if let unwrappedVariable = variable {
    var number:Float = unwrappedVariable.floatValue
}
无论如何,使用基础有一个小问题。对于这些类型的转换,它没有可选值的概念(对于int,float)。如果不能将字符串解析为and integer或float,则返回0。这就是为什么最好使用swift native
String

if let variable: String = NSString(data: data, encoding: NSUTF8StringEncoding) {
    if let integer = variable.toInt() {
        var integerNumber = integer
        var floatNumber = Float(integer)
    }
}

快速查看一下文档怎么样。在Swift 2中删除了toInt()函数。我们必须使用int的构造函数,它接受string-int(myString)。有关更多详细信息,请参阅此答案: