使用Swift将UInt8?,String,Int转换为String类型

时间:2015-11-18 23:39:02

标签: swift

我正在使用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是字符串"你好"。

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

1 个答案:

答案 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)