CBPeripheral track写入记录

CBPeripheral track written record

从数据库中,我正在检索数据记录,然后将每条记录写入 BLE 设备的 CBCharacteristic。编写实现,

for service in self.connectedPeripheral!.services! {

   for characteristic in service.characteristics! {

       if characteristic.UUID.UUIDString == "1111" {

         self.connectedPeripheral!.writeValue(dataRecord, forCharacteristic: characteristic, type: .WithResponse)

       }
   }
}

现在 CBPeripheraldidWriteValueForCharacteristic 方法被 nil NSError 调用。所以写入成功。但是我们如何跟踪哪些数据记录被写入了 BLE 设备。因为我需要从数据库中删除这条写入成功的记录。在 CBCharacteristic 文档中,当我们开始对 BLE 进行写操作时,我找不到任何可以设置为数据库 record_id 的 属性 。其中大部分是只读的。

func peripheral(peripheral: CBPeripheral, didWriteValueForCharacteristic characteristic: CBCharacteristic, error: NSError?) {

   print("write characteristic: \(characteristic)")
   // Need to track the record here So it can be removed from database

}

peripheral:didWriteValueForCharacteristic:error 方法中获得响应后,您必须调用此方法 [peripheral readValueForCharacteristic:characteristic]

这样你会在peripheral:didUpdateValueForCharacteristic:error:中得到回调 在这里你可以检查你的特征的值,如果它成功写入你的特征,则删除记录。

-(void) peripheral:(CBPeripheral *)peripheral didUpdateValueForCharacteristic:(CBCharacteristic *)characteristic error:(NSError *)error {

  if (error == nil) {
   NSString *characteristicValue=[[NSString alloc] initWithData:characteristic.value encoding:NSUTF8StringEncoding];
   NSLog(@"value=%@",characteristicValue);
  }
}