dispatch_data_t转换为nsstring

时间:2015-12-02 16:20:51

标签: ios swift

我正在尝试在swift中实现PeerTalk框架。 当mac向我发送数据时获取此类型:

public class PTData : NSObject {
public var dispatchData: dispatch_data_t! { get }
public var data: UnsafeMutablePointer<Void> { get }
public var length: Int { get }

}

可以假设进行简单转换和nil检查:

    if payload != nil {
      let databis = NSData(bytesNoCopy: payload.data, length: payload.length, freeWhenDone: false)
        let data = NSData(contentsOfDispatchData: payload.dispatchData)
        let str = NSString(data: data, encoding: NSUTF8StringEncoding)
        let strbis = NSString(data: databis, encoding: NSUTF8StringEncoding)
        print("data is receive")
        print(str)
        print(strbis)
    }

有效负载属于PTData类型!如前所述。 我试过的方法都没有用来恢复我的字符串,我明白了:

  

收到数据

     

可选()

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

let strbis = NSString(data: databis, encoding: NSUTF8StringEncoding)

返回可选类型的NSString?

所以你应该写一些类似的东西:

if payload != nil {
    let databis = NSData(bytesNoCopy: payload.data, length: payload.length, freeWhenDone: false)
    let data = NSData(contentsOfDispatchData: payload.dispatchData)
    let str = NSString(data: data, encoding: NSUTF8StringEncoding)
    let strbis = NSString(data: databis, encoding: NSUTF8StringEncoding)
    print("data is receive")
    if str != nil {
        print(str!)
    }
    if strbis != nil {
        print(strbis!)
    }
}