我尝试通过以下方式实现它:
peripheral.services?.removeAll()
但它返回错误
不能在不可变值上使用变异成员
删除或取消订阅服务的正确方法是什么?
答案 0 :(得分:0)
错误明确指出peripheral.services?
不是不可变内容。因此您无法编辑其中的内容。
您需要使用
removeAllServices()
- 删除所有已发布的服务
和
remove(CBMutableService)
- 删除指定的服务
Apple
参考
答案 1 :(得分:0)
您无法从使用CBCentralManager
发现的外围设备中删除服务;外设具有的服务集由该外设设置,这就是该属性不可变的原因。当您使用CBPeripheralManager
广告外围设备时,将使用您尝试使用的功能。
当您连接到外围设备时,您可以选择在特定特征更改时(如果该特征支持notify
)使用peripheral.setNotifyValue(bool, for: CBCharacteristic)
接收通知,或者您可以断开连接完全从外围设备,但你没有订阅'也没有取消订阅'从服务。