iOS:向BLE特性添加数据,抛出错误,要求提供只读特性

时间:2015-09-24 15:09:01

标签: ios objective-c bluetooth-lowenergy

我有一个广告并可以连接的iOS BLE服务,但现在我想为外设添加一个特性。我想我只是在value属性中添加一个新的NSData对象来创建特性,但每当我在外设管理器上调用addService时,我都会收到这个错误:

file

我添加特征的方法如下:

2015-09-24 09:02:59.456 peripheral[459:27589] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Characteristics with cached values must be read-only'

虽然当我将值项更改为nil时,它再次宣告正常。我确信我有一些简单的东西,但是我仍然相当陌生,所以任何帮助都会很棒。谢谢!

1 个答案:

答案 0 :(得分:5)

来自CBMutableCharacteristic init方法的文档 -

  

value - 要缓存的特征值。如果为零,则值为   动态,将根据要求提出要求。

这意味着如果您在创建CBMutableCharacteristic时指定了非零值,那么它就是一个“缓存”特征'并且正如错误消息所示,您无法在以后更改该值。创建nil时指定CBMutableCharacteristic - 您可以在didReceiveReadRequest CBPeripheralManagerDelegate方法中提供请求时提供值。