Xcode 8.0 CBCentralManager问题
问题描述:
我最近下载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版本手机这个项目?
答
最简单的方法就是使用速记参考枚举值:
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
}
}
现在你的代码将编译没有错误或警告,并可以正常工作在所有目标