У меня есть приложение, которое сообщает iDevice-to-iDevice через Bluetooth LE с использованием основы CoreBluetooth. По одной из моих характеристик я отправляю дату, закодированную 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.
Я знаю, что в документации по Bluetooth Core 4.0, том 2, часть D, раздел 2, код ошибки 0x09 - предел соединения превышен. Однако в этой ситуации это не имеет смысла (между ними существует только одна связь).
Интересным фактом является то, что если я просто закодировать строку и отправить его, нет никаких проблем:
NSData *data = [self.localTestString dataUsingEncoding:NSUTF8StringEncoding];
[self.connectedDevice writeValue:data forCharacteristic:self.myCharacteristic type:CBCharacteristicWriteWithResponse];
Периферийное получает запрос на запись, может декодировать его должным образом, и может принять его без проблем.
У любого есть идеи, что происходит?