我最近下载了Xcode 8.0,并尝试运行我的上一个使用核心蓝牙的项目。
我已经启用了在构建设置中使用传统的Swift语言版本,以实现在WASTWR2.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
}
}
以前,CBCentralManagerState central.state会以int形式返回类型,但现在它返回CBManagerState,因此得到了一个错误,所以我更改为
if (central.state == CBManagerState.PoweredOn)
但是CBManagerState只支持IOS 10+,但是我想为IOS 8.3+构建它,那么如何更改代码呢?
UPDATE I也将项目转换为快速3.0,但问题仍然存在,所以我如何在ios版本低于10的手机上运行这个项目?
发布于 2016-09-21 02:42:29
最简单的方法就是使用对枚举值的简短引用:
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
}
}
现在,您的代码将在没有错误或警告的情况下编译,并在所有目标上正确工作。
https://stackoverflow.com/questions/39606316
复制相似问题