簡體   English   中英

在 class 中設置 CoreBluetooth peripheral.delegate

[英]Setting CoreBluetooth peripheral.delegate in a class

我正在嘗試從 CoreBluetooth 外圍設備發現服務等,但我遇到了一個問題,因為peripheral.delegate = self (正如我在每個教程中看到的那樣)試圖將 peripheral.delegate 設置為父 BluetoothHandler object .

我的相關代碼是:

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)
    }
    
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM