2016-10-05 2 views
0

От IOS, SDK 10.0, класс CBCentralManager теперь унаследовал от CBManagerпроблемы совместимости между CoreBluetooth CBCentralManagerState (IOS 5.x до 9.x) и CBManagerState (IOS 10.x или выше)

CBManager вводится прошивкой 10.0, он недоступен в более ранних версиях.

Свойство state теперь переписываются как CBManagerState

CBManagerState также вводится в прошивкой 10.0, он не доступен в более ранних версиях.

Это означает CBCentralManager «s state свойства имеет типа CBManagerState, который доступен только на прошивке 10,0

Так что, когда вы читаете состояние, вы получите CBManagerState. Но для более ранних версий iOS этот тип недоступен, поэтому вы должны использовать его для ранее признанного (устаревшего в iOS 10.0) CBCentralManagerState типа перечисления.

CBCentralManagerState(rawValue: centralManager.state.rawValue) ?? .Unknown 

Теперь вы можете использовать эту state собственности в более ранние версии IOS. Когда ваше приложение будет подготовлено для iOS 10.0 или выше, только тогда вы можете использовать его как CBManagerState напрямую.

+0

http://stackoverflow.com/questions/39577272/how-to- convert-value-of-type-cbmanagerstate-to-expected-type-cbcentralmanager? – Larme

ответ

0

«CBManagerState» доступен только в iOS 10.0 или новее.

Заменить все перечисления CBCentralManagerState и CBPeripheralManagerState на CBManagerState. Перечисления совместимы с двоичными файлами, поэтому ваш код будет работать отлично на любой версии iOS. Если вы хотите по-прежнему скомпилировать свой код с помощью Xcode 7, вы можете добавить некоторые действительно простые определения.

#if __IPHONE_OS_VERSION_MAX_ALLOWED <= __IPHONE_9_3 
#define CBManagerState CBCentralManagerState 
#define CBManagerStateUnknown CBCentralManagerStateUnknown 
#define CBManagerStateResetting CBCentralManagerStateResetting 
#define CBManagerStateUnsupported CBCentralManagerStateUnsupported 
#define CBManagerStateUnauthorized CBCentralManagerStateUnauthorized 
#define CBManagerStatePoweredOff CBCentralManagerStatePoweredOff 
#define CBManagerStatePoweredOn CBCentralManagerStatePoweredOn 
#endif 

, если вы хотите узнать больше об этом изменении, пожалуйста, следуйте этим ссылке:

Best practice for checking if an enum exists in iOS version?

CBCentralManagerState deprecated iOS 10

Смежные вопросы