Я работаю над iOS-приложением, которое использует CentralBluetooth Central Manager. Приложение работало, как ожидалось, до тех пор, пока я не обновился до xCode 8. Это обновление почему-то заставило меня преобразовать код из Swift 2.3 в Swift 3.0 с менеджером конверсий. После этого я получил сообщение об ошибке: «Невозможно преобразовать значение типа« CBManagerState »в ожидаемый тип аргумента« CBCentralManagerState », и я искал ответ, но из-за того, что обновление является новым, нет никаких полезных проблем или документацию, касающуюся CB Bluetooth, используемого с Swift 3.0 или iOS 10.0.Как преобразовать значение типа «CBManagerState» в ожидаемый тип «CBCentralManagerState» после преобразования в синтаксис Swift 3.0?
Линии, отмеченные звездочкой, являются линиями, которые вызвали ошибку.
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) *
}
}
Любая помощь приветствуется. Спасибо заранее.
Можете ли вы пытались прочитать документацию о BLE? [docs] (https://developer.apple.com/reference/corebluetooth/cbcentralmanagerstate) –
Каков тип centralManager в третьей строке? И какой тип аргумента выполняет delegate.serialDidChangeState()? –
Да, я прочитал документацию, вот как я получил ее, чтобы работать отлично в первую очередь перед обновлением. Тип centralManager - «CBCentralManager!». Ожидаемый тип аргумента delegate.serialDidChangeState() - это «CBCentralManagerState». Это основной исходный код, который я использовал, чтобы заставить его работать до обновления: https://github.com/hoiberg/HM10-BluetoothSerial-iOS Thaaaanks;) – iiiiirev