我正在使用SwiftSocket library,我正在尝试转换UDP套接字从类型' UInt8?,String,Int'键入String。
let data = client.recv(1024)
let string = NSData.withBytes(data)
let str = NSString(data: string, encoding: NSUTF8StringEncoding) as String?
当我尝试这个时,我收到以下错误:
无法将类型'((UInt8]?,String,Int)'(又名'(可选>,String,Int)')的值转换为预期的参数类型& #39; [UINT8'
如果我打印出数据',我会收到以下内容:
(Optional([104, 101, 108, 108, 111]), "127.0.0.1", 34835)
104,101,108,108,111是字符串"你好"。
有没有办法将读取的数据转换为字符串?
答案 0 :(得分:0)
您的方法是正确的,但您忘记从收到的对象获取数据。这是data.0
。
let receivedData:([UInt8], String, Int) = ([104, 101, 108, 108, 111], "", 0)
let data = NSData(bytes: receivedData.0, length: receivedData.0.count)
let str = NSString(data: data, encoding: NSUTF8StringEncoding) as! String
print(str)