ios - 在类中设置 CoreBluetooth peripheral.delegate
问题描述
我试图从 CoreBluetooth 外围设备中发现服务等,但我遇到了一个问题,因为peripheral.delegate = self
(正如我在每个教程中看到的那样)试图将 peripheral.delegate 设置为父 BluetoothHandler 对象。
我的相关代码是:
class BluetoothHandler: NSObject, ObservableObject, CBCentralManagerDelegate {
func centralManager (_ central: CBCentralManager, didConnect peripheral: CBPeripheral {
peripheral.delegate = self // Cannot assign value of type BluetoothHandler to CBPeripheralDelegate?
peripheral.discoverServices(nil)
}
}
解决方案
那是因为您BluetoothHandler
不符合正确的委托协议,该协议CBPeripheralDelegate
代替或补充CBCentralManagerDelegate
.
另请注意,您通常应该保持连接的外围设备,例如:
class BluetoothHandler: NSObject, ObservableObject, CBPeripheralDelegate {
var connectedPeripheral: CBPeripheral?
func centralManager (_ central: CBCentralManager, didConnect peripheral: CBPeripheral) {
connectedPeripheral = peripheral
connectedPeripheral?.delegate = self
connectedPeripheral?.discoverServices(nil)
}
}
推荐阅读
- javascript - Laravel & Javascript 购物车数量问题
- django - WinError 10060 连接尝试失败
- ios - 在 AnyCancellable 上调用 .cancel() 与在 AnyCancellable 上调用有区别吗?= 在 SwiftUI 中为零?
- python - cap.read() 是 Python 中 OpenCV 中的元组吗?
- python - pyqt UI 文件 - 设置类属性
- javascript - JavaScript 解码 API 响应并制作 html 元素
- assembly - ARM 错误:立即表达式需要 # 前缀
- c++ - 如何在 C++ 预处理中以不同方式处理元组和单个标记?
- ios - 自定义 UITableViewCell 类 IOS 中文本字段中的空字符串
- node.js - 你如何填充一组猫鼬对象?