2016-09-19 8 views
1

私はCoreBluetooth Central Managerを使用するiOSアプリケーションを開発中です。このアプリはxCode 8にアップデートされるまで、期待どおりに動いていた。このアップデートによって、どうにか私はSwift 2.3からSwift 3.0へのコードを何とか変換マネージャーに変換させた。 この後、エラーメッセージ 'CBManagerStateの値を' CBCentralManagerState 'の予想される型に変換できませんでした。私は答えを探していましたが、理由は更新が新しいため、有益な問題はありませんまたはSwift 3.0またはiOS 10.0で使用されるCB Bluetoothに関する文書。Type 'CBManagerState'の値をSwift 3.0構文に変換した後に期待されるタイプ 'CBCentralManagerState'に変換する方法はありますか?

星印の付いた行は、エラーが発生した行です。

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) * 
    } 
} 

助けていただければ幸いです。 ありがとうございます。

+0

から前CBCentralManagerを削除するあなたはBLEについてのドキュメントを読むことを試みたことができますか? [docs](https://developer.apple.com/reference/corebluetooth/cbcentralmanagerstate) –

+0

3行目のcentralManagerのタイプは何ですか?そして、delegate.serialDidChangeState()はどの引数型を予期していますか? –

+0

ええ、私はドキュメントを読んで、どのように更新前の最初の場所で完璧に動作するようにしていますか? centralManagerのタイプは 'CBCentralManager!'です。 delegate.serialDidChangeState()の予想される引数の型は 'CBCentralManagerState'です。これは私がアップデート前に動作させるのに使った基本的なソースコードです:https://github.com/hoiberg/HM10-BluetoothSerial-iOS Thaaaanks;) – iiiiirev

答えて

4

これは私のためにコンパイルされます。

var state: CBCentralManagerState { get { return CBCentralManagerState(rawValue: centralManager.state.rawValue)! } 

dev forumsによると:

あなたのコードは、任意のiOSのバージョン

上で問題なく動作しますので、列挙型はバイナリ互換性があり、私は」 centralManagerDidUpdateState funcの状態を使用していますが、次のようにしてください:

コンパイラが(つまりと幸せであるように思わ
switch central.state{ 
    case .poweredOn: 
     NSLog("CoreBluetooth BLE hardware is powered on"); 
     break 
    case .poweredOff: 
     NSLog("CoreBluetooth BLE hardware is powered off"); 
     break; 
    case .unauthorized: 
     NSLog("CoreBluetooth BLE state is unauthorized"); 
     break 
    case .unknown: 
     NSLog("CoreBluetooth BLE state is unknown"); 
     break; 
    case .unsupported: 
     NSLog("CoreBluetooth BLE hardware is unsupported on this platform"); 
     break; 
    default: 
     break 
    } 

からCBCentralManager.poweredOn

+0

これまで私のために働いていました。ええ、私は、iOS 10で値下がりしたと聞いていましたが、それを置き換えたり、この問題を解決する方法がわかりませんでした。 私は人生を救ってくれてありがとうございました(; – iiiiirev

+0

すごい!問題はありません - それがあなたのために解決されれば - upvote/answer the answer!=] – Andrew

関連する問題