在转换为Swift 3.0语法后,如何将types'CBManagerState'的值转换为预期types'CBCentralManagerState'?
我正在使用CoreBluetooth中央pipe理器的iOS应用程序。 该应用程序正常工作,直到我更新到xCode 8.这个更新以某种方式迫使我转换代码从Swift 2.3到Swift 3.0与转换pipe理器。 在此之后,我得到错误消息“无法将types'CBManagerState'的值转换为期望的参数types'CBCentralManagerState',我正在寻找答案,但由于更新是新的原因,没有任何有用的问题或有关与Swift 3.0或iOS 10.0一起使用的CB蓝牙的文档。
标有星号的行是产生错误的行。
final class BluetoothSerial: NSObject, CBCentralManagerDelegate, CBPeripheralDelegate { ....//some code here from HM10 Bluetooth Serial var centralManager: CBCentralManager! var state: CBCentralManagerState { get { return centralManager.state } * func centralManagerDidUpdateState(_ central: CBCentralManager) { //note that "didDisconnectPeripheral" won't be called if BLE is turned off while connected connectedPeripheral = nil pendingPeripheral = nil //send it to the delegate delegate.serialDidChangeState(central.state) * } }
任何帮助表示赞赏。 提前致谢。
这为我编译:
var state: CBCentralManagerState { get { return CBCentralManagerState(rawValue: centralManager.state.rawValue)! }
根据开发论坛 :
枚举是二进制兼容的,所以你的代码将在任何iOS版本上运行良好
我只使用centralManagerDidUpdateState
函数中的状态 – 但是这样做如下:
switch central.state{ case .poweredOn: NSLog("CoreBluetooth BLE hardware is powered on"); break case .poweredOff: NSLog("CoreBluetooth BLE hardware is powered off"); break; case .unauthorized: NSLog("CoreBluetooth BLE state is unauthorized"); break case .unknown: NSLog("CoreBluetooth BLE state is unknown"); break; case .unsupported: NSLog("CoreBluetooth BLE hardware is unsupported on this platform"); break; default: break }
编译器似乎很满意(即从CBCentralManager.poweredOn
删除前面的CBCentralManager.poweredOn