我无法将Objective-C代码转换为Swift 2。
这是我的Objective-C代码:
NSString* wifiname = wifiName;
NSData *wifinames = [wifiname dataUsingEncoding:NSUTF8StringEncoding];
NSUInteger wifinamelength = [wifinames length];
Byte wifiNamelengths[1] = {wifinamelength};
我将其转换为以下内容,但收到了一些错误:
var wifiname: String = wifiName
var wifinames: NSData = wifiname.dataUsingEncoding(NSUTF8StringEncoding)!
var wifinamelength: Int = wifinames.length
var wifiNamelengths[1] : UInt8 = {wifinamelength}
有人可以帮我弄清楚为什么会这样吗?
答案 0 :(得分:2)
这行代码有很多问题。
这可能是你想要的:
var wifiNamelengths: [UInt8] = [UInt8(wifinamelength)]
请注意,数组的语法与代码中的语法完全不同。此外,还需要铸造。
答案 1 :(得分:2)
错误是由于使用数组的语法不正确。
您还需要显式地将长度值类型转换为UInt8
,因为Swift 2不允许自动类型转换。
正确的语法如下:
var wifiNamelengths: [UInt8] = [ UInt8(wifinames.length) ]
除非存在将值存储为UInt8的特定原因,否则可以通过使用类型推理并将值存储为Int
的数组来简化:
var wifiNamelengths = [ wifinames.length ]
答案 2 :(得分:1)
数组声明和初始化语法错误,您在那里使用Objective C / C样式语法。
您应该将其更改为:
var wifiNamelengths : [UInt8] = [UInt8(wifinamelength)]
用于修复@MartinR
提及的issuevar wifiNamelengths : [UInt8] = [UInt8(truncatingBitPattern: wifinamelength)]
答案 3 :(得分:0)
请尝试下面的代码。将Objective-c转换为Swift。
var wifiname: String = wifiName
var wifinames: NSData = wifiname.dataUsingEncoding(NSUTF8StringEncoding)
var wifinamelength: Int = wifinames.characters.count
var wifiNamelengths:[Byte] = [wifinamelength]