10

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

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

4

1 に答える 1

13

すべてのCBCentralManagerDelegateメソッドをすべて実装するシングルトンを作成します。次に、そのシングルトン用の独自のデリゲート メソッドを作成して、viewController にメッセージを送信します。そうすれば、どのクラスでも簡単に使用できます。CBPeripherals の保存に関してNSMutableArrayは、シングルトンに含まれる内部に配置するだけです。

シングルトン インスタンスの作成方法については、このリンクをご覧ください。

(ああ、 「他のView Controllerで初期化する」と言うところについて..CFUUIDRefそうであってはなりません。retrievePeripherals:(NSArray*)それがあなたの言いたいことなら...)

于 2013-07-03T21:32:24.267 に答える