2015-12-02 2 views
0

Я пытаюсь реализовать структуру PeerTalk в swift. Получение этого типа, когда макинтош отправляет мне данные:dispatch_data_t преобразование в nsstring

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! подобный заявленный ранее. Ни один из методов я пытался работал, чтобы получить мою строку назад, я получаю это:

данные получают

Факультативные()

Есть идеи?

ответ

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!) 
    } 
} 
+0

Проблема не optionnal здесь, но тот факт, что optionnal пуст, не ноль, но с на самом деле нет данных внутри него. –

+0

Вы проверили содержимое 'payload.dispatchData'? – AncAinu

+0

Говоря об этом, действительно странно, что иногда, если я печатаю данные + строку, строка отображается правильно, я не понимаю, что происходит. –

Смежные вопросы