CBMutableDescriptor:initWithType:value:
的文档说是为类型参数传递“标识特征的128位UUID”。然后它继续说你应该只使用CBUUIDCharacteristicUserDescriptionString
或CBUUIDCharacteristicFormatString
中的一个作为类型参数。最后,没有方法可以将描述符添加到可变特征中。
看来该参数正在做两个相互排斥的事情。一方面,它用于告诉O / S描述符适用的特征,另一方面,它用于设置描述符的类型。第二个更有意义,但是如何将描述符添加到特征中呢?
是否传递特征的UUID或CBUUIDCharacteristicUserDescriptionString
,iOS崩溃
Assertion failure in -[CBMutableDescriptor initWithType:value:], /SourceCache/CoreBluetooth_Sim/CoreBluetooth-59.3/CBDescriptor.m:25
创建CBMutableDescriptor并将其添加到CBMutableCharacteristic的正确方法是什么?
答案 0 :(得分:5)
你对文档是正确的。但为了让大家清楚,这里有一个CBDescriptor.h中的引文:
...仅限特征用户描述和特征 目前支持演示文稿格式描述符。该 特征扩展属性和客户端特征 配置描述符将自动创建 发布父服务,具体取决于 特征本身。
换句话说,除非你设置这些描述符,否则系统会阻止你(这就是你断言失败的原因)。
所以说你想使用特征用户描述描述符,你会这样做:
CBUUID *yourCharUUID = [CBUUID UUIDWithString:@"c07c5050-15a0-11e3-8ffd-0800200c9a66"];//whatever UUID your using
CBMutableCharacteristic *yourCharacteristic = [[CBMutableCharacteristic alloc]initWithType:yourCharUUID properties:CBCharacteristicPropertyWriteWithoutResponse value:nil permissions:perms];
CBUUID *userDescriptionUUID = [CBUUID UUIDWithString:CBUUIDCharacteristicUserDescriptionString];//or set it to the actual UUID->2901
CBMutableDescriptor *yourDescriptor = [[CBMutableDescriptor alloc]initWithType:userDescriptionUUID value:@"myDescriptorValue"];
yourCharacteristic.descriptors = @[yourDescriptor];
如果您有任何问题,请与我们联系。