Ios 如何使用Swift将NSString转换为整数?
我需要在Swift中将一个转换成一个整数:这是我正在使用的当前代码;它不起作用: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
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 nativeString
:
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)。有关更多详细信息,请参阅此答案: