2
我有一個應用程序,使用CoreBluetooth框架通過藍牙LE與iDevice-to-iDevice進行通信。對於我的一個特點,我發送一個使用NSKeyedArchiver編碼的日期(例如在accepted answer for this question中)。CoreBluetooth在寫入使用NSKeyedArchiver編碼的數據時失敗?
發生這種情況時,我得到:
CoreBluetooth[WARNING] Unknown Error: 9
和外圍甚至沒有收到寫請求,也沒有拋出任何錯誤。
的中央側,將執行以下操作:
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:self.myDate];
[self.connectedDevice writeValue:data forCharacteristic:self.myCharacteristic type:CBCharacteristicWriteWithResponse];
凡指明MyDate是一個有效的NSDate。
我知道,根據藍牙核心4.0文檔第2卷D部分第2部分,錯誤代碼0x09是連接限制超出。然而,在這種情況下這是沒有意義的(兩者之間只有一個聯繫)。
一個有趣的事實是,如果我只是編碼字符串,並將其發送,沒有任何問題:
NSData *data = [self.localTestString dataUsingEncoding:NSUTF8StringEncoding];
[self.connectedDevice writeValue:data forCharacteristic:self.myCharacteristic type:CBCharacteristicWriteWithResponse];
外設接收到寫請求時,可以適當對其進行解碼,並可以接受它沒有問題。
任何人有任何想法發生了什麼?