2016-09-21 67 views
0

我最近下载Xcode 8.0并试图运行我以前使用内核蓝牙的项目。Xcode 8.0 CBCentralManager问题

我已经启用使用传统的斯威夫特语言版本在建的SWIFT 2.3 一切正常设置的兼容性,但有一个问题发生,

func centralManagerDidUpdateState(central: CBCentralManager) 
{ 
    print("state is \(central.state.rawValue)") 
    if (central.state == CBCentralManagerState.PoweredOn) 
    { 
     self.centralManager?.scanForPeripheralsWithServices([serviceUUID], options: nil) 
    } 
    else 
    { 
     // do something like alert the user that ble is not on 
    } 
} 

以前central.state将返回CBCentralManagerState类型作为整数,但现在它返回CBManagerState所以得到一个错误,所以我改为

if (central.state == CBManagerState.PoweredOn) 

CBManagerState仅在IOS 10+中支持,但我想为IOS 8.3+构建它,所以如何更改代码?

UPDATE 我也转化项目SWIFT 3.0,但还是同样的问题,所以,我怎么可以运行在低于​​10 IOS版本手机这个项目?

回答

3

最简单的方法就是使用速记参考枚举值:

func centralManagerDidUpdateState(central: CBCentralManager) 
{ 
    print("state is \(central.state.rawValue)") 
    if (central.state == .PoweredOn) 
    { 
     self.centralManager?.scanForPeripheralsWithServices([serviceUUID], options: nil) 
    } 
    else 
    { 
     // do something like alert the user that ble is not on 
    } 

} 

现在你的代码将编译没有错误或警告,并可以正常工作在所有目标