在转换为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