CoreBluetooth не работает при записи данных, закодированных с помощью NSKeyedArchiver?

У меня есть приложение, которое связывает iDevice-to-iDevice через Bluetooth LE с использованием фреймворка 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];

Периферийное устройство получает запрос на запись, может правильно его декодировать и без проблем принять.

Кто-нибудь знает, что происходит?




Ответы (1)


Насколько велики ваши архивные данные с ключами и локальная тестовая строка? Похоже, вы превышаете доступный для записи размер характеристики.

person cbowns    schedule 24.10.2013