2015-11-18 96 views
1

我正在使用SwiftSocket library,我试图将UDP套接字从类型'UInt8?,String,Int'接收的数据转换为String类型。使用Swift将UInt8?,String,Int转换为String类型

let data = client.recv(1024) 
    let string = NSData.withBytes(data) 
    let str = NSString(data: string, encoding: NSUTF8StringEncoding) as String? 

当我尝试这一点,我得到以下错误:

Cannot convert value of type '((UInt8]?,String,Int)' (aka'(Optional>, String, Int)') to be expected argument type '[UInt8'

如果我打印出 '数据',我收到以下:

(Optional([104, 101, 108, 108, 111]), "127.0.0.1", 34835) 

其中104,101,108,108,111是字符串“你好”。

有没有办法将读取的数据转换为字符串?

+0

http://stackoverflow.com/questions/24196820/nsdata-from-byte-array-in-swift – Darko

+0

你必须将它转换为UInt8数组。 – Darko

+0

在你发布的链接中,答案是:var endMarker = NSData(字节:[0xFF,0xD9]为[UInt8],长度为2)。什么是FF和D9?你能告诉我一个例子吗? – bshah

回答

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) 
相关问题