iOS:将数据添加到BLE特征引发错误,请求只读特征

iOS:将数据添加到BLE特征引发错误,请求只读特征,ios,objective-c,bluetooth-lowenergy,Ios,Objective C,Bluetooth Lowenergy,我有一个iOS-BLE服务,可以做广告并可以连接到,但现在我想给外设添加一个特性。我想我应该在value属性中添加一个新的NSData对象来创建特征,但是每当我在外围设备管理器上调用addService时,我都会遇到以下错误: 2015-09-24 09:02:59.456 peripheral[459:27589] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason:

我有一个iOS-BLE服务,可以做广告并可以连接到,但现在我想给外设添加一个特性。我想我应该在value属性中添加一个新的NSData对象来创建特征,但是每当我在外围设备管理器上调用addService时,我都会遇到以下错误:

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'
我添加特征的方法如下所示:

- (void)peripheralManagerDidUpdateState:(CBPeripheralManager *)peripheral{
    if (peripheral.state == CBPeripheralManagerStatePoweredOn) {
        _shareService = [[CBMutableService alloc] initWithType:_serviceUUID primary:YES];
        _notifyUUID = [CBUUID UUIDWithString:@"F098FDEF-B82C-43F1-8BFB-18757743BA10"];
        _notificationCharacteristic = [[CBMutableCharacteristic alloc] initWithType:_notifyUUID
                                                                         properties:CBCharacteristicPropertyNotify
                                                                              value:[@"Some Data" dataUsingEncoding:NSUTF16StringEncoding]
                                                                        permissions:CBAttributePermissionsReadable];

        [_shareService setCharacteristics:@[_notificationCharacteristic]];

        [_pMgr addService:_shareService];

        [self startAdvertising];

    }
}

虽然当我将value项更改为nil时,它会再次发布罚款广告。我肯定有一些简单的东西我不知道,但我对iOS还是相当陌生,所以任何帮助都会很棒。谢谢

来自
CBMutableCharacteristic
init方法的文档-

value-要缓存的特征值。如果为nil,则值为 动态和可根据需要进行请求


这意味着,如果在创建
CBMutableCharacteristic
时指定了非nil值,则该值为“缓存特征”,并且如错误消息所述,以后无法更改该值。在创建
CBMutableCharacteristic
时指定
nil
——在
didReceiveReadRequest
cbPeripherManagerDelegate
方法中请求时提供值。

我将对此稍作讨论。仍然看不到使用该方法返回的数据,但希望我能很快让它在这里工作。