编写使用NSKeyedArchiver编码的数据时,CoreBluetooth会失败吗?

时间:2013-03-12 20:47:13

标签: ios nskeyedarchiver core-bluetooth bluetooth-lowenergy ios-universal-app

我有一个应用程序,使用CoreBluetooth框架通过蓝牙LE传送iDevice-to-iDevice。对于我的一个特征,我发送一个用NSKeyedArchiver编码的日期(例如在accepted answer for this question中)。

当发生这种情况时,我得到:

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];

外设接收写请求,可以正确解码,并且可以毫无问题地接受它。

任何人都知道发生了什么事?

1 个答案:

答案 0 :(得分:0)

您的密钥存档数据和本地测试字符串有多大?听起来你可能超出了特征的可写大小。