10

私は、ビューコントローラであるSViewControllerでいくつかのBLE接続をセットアップしました。他のビューコントローラで使用するために周辺機器を保存する必要があります。私は、NSUserDefaultオブジェクトを作成してそこに周辺機器を格納しようとしましたが、エラー"Attempt to insert non-property value"があり、決して挿入されませんでした。 NSDataオブジェクトにラップしてNSUserDefaultsに格納しようとしましたが、エラー"-[CBConcretePeripheral encodeWithCoder:]: unrecognized selector sent"が発生し、アプリケーションがクラッシュしました。だから間違いなく動作しませんでした。私は3つのCBPeripheral変数をグローバルにしようと試みましたが、それには多大な問題がありました。 (私はまだ非常にプログラミングに新しいです)。私はどういうわけかそれらをキャッシュして調べましたが、ここでそれがうまくいかず、時間を無駄にしないことを読みました。CBPeripheralを他のビューで使用するために保存する方法

CBPeripheralオブジェクトを格納して他のビューコントローラにアクセスして初期化する方法を知っている人はいますか?

+0

シングルトンアプローチを試しましたか?ビュー間でBluetooth接続を維持できるか、使用するときに再接続する必要がありますか? –

答えて

12

すべてのCBCentralManagerDelegateメソッドのすべてを実装するシングルトンを作成します。次に、そのシングルトンの独自のデリゲートメソッドを作成して、viewControllerにメッセージを送ります。そうすれば、どのクラスでも簡単に使用できます。 CBPeripheralsを格納する場合は、シングルトンの中に含まれているNSMutableArrayの中に置くことができます。

どのようにCreate a Singleton Instance

(ああ、あなたは ..Thatが今までの場合であってはならない。しかし、多分あなただけの店に意味「ほかのView Controllerでそれを初期化する」と言うところのために、このリンクをチェックアウトCFUUIDRef?これを行うと、retrievePeripherals:(NSArray*)に電話をかけて、どこにいても周辺オブジェクトを戻すことができます。

+0

非常に助かりました、ありがとうございます! – John

+0

問題はありません –

関連する問題