2016-10-05 16 views
0

は、クラスCBCentralManagerについてCBManagerCoreBluetoothの互換性の問題

CBManagerから継承されているIOSで導入さ10.0以前のバージョンでは利用できません。

stateプロパティは今CBManagerState

CBManagerStateとして列挙されてもiOSの10.0で導入され、それは、以前のバージョンでは使用できません。 CBCentralManagerstateプロパティは、状態を読み込むときに、あなたがCBManagerStateを得るiOSの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-を変換値のタイプcbmanagerstateから期待されるタイプcbcentralmanager? – Larme

答えて

0

「CBManagerState」は、iOS 10.0以降でのみ使用できます。

すべてのCBCentralManagerStateおよびCBPeripheralManagerState列挙体をCBManagerStateに置き換えます。 enumはバイナリ互換ですので、あなたのコードはどんな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