2016-04-16 11 views
0

私は過去のカップルの日のためにウェブを検索していますが、まだ動作するソリューションを見つけることができないようです。私はコアのBluetoothを実行していて、Arduinoからデータを取得しようとしています。ここでは、コードです:コアのBluetooth機能

//Reading Bluetooth Data 
func peripheral(peripheral: CBPeripheral, didUpdateValueForCharacteristic characteristic: CBCharacteristic, error: NSError?) { 
    let data = characteristic.value 
    if let str:String = String(data: data!, encoding: NSUTF8StringEncoding) { 
     self.delegate?.serialDidReceiveString(str) 
     print(str) 
    } 
} 

私は問題なくprint(str)を使用して、着信データを見ることができましたが、どのように世界で私はUILabel上に、これは別の迅速なファイルにデータを受信した転送し、最終的にそれを表示するでしょうか?関数の外でstrを使用しようとするたびに、Xcodeは "予期した宣言"を伝え続けます。 。私はエラーを取得していないものの機能はvar delegate: BluetoothSerialDelegate!に位置しているクラス内で定義され、この変数で

protocol BluetoothSerialDelegate { 
    func serialDidReceiveString(message: String) 
} 
extension BluetoothSerialDelegate { 
    func serialDidReceiveString(message: String) {} 
} 

、私はViewControllerを内部

func serialDidReceiveString(message: String) { 
     Label.text! = message 
     print(message) 
    } 

を呼び出すとき:デリゲートの私の試みは、以下であります最初の関数から呼び出されたときのようにデータを見ることができません。何が問題になる可能性がありますか?ありがとうございました!

答えて

0

グローバル変数を持つように、hファイルの文字列を宣言します。あるいは、ユーザーのUser Defaultsを保存するだけで、別のファイルから簡単にアクセスできます。

0

あなたは代議員を持っています...なぜそれを使用しないのですか?クラスでは、データを表示し、デリゲートに準拠させ、デリゲートメソッドserialDidReceiveString:を実装します。次に、データが受信されると、他のビューでデリゲートメソッドが呼び出され、ラベルを更新することができます。

+0

ありがとうございました!しかし、これはSwiftの私の最初のプロジェクトであり、多くの情報がさまざまなフォーラムでまとめられています。デリゲートメソッドでこれをどうやってやるのか、もっと詳しく説明してください。私はそれを試みたが、関数が他の迅速なファイルを介して呼び出されると、受信したデータは表示されなくなることが分かった。また、あなたが望むなら、私はコードをあなたと共有することがより喜ばしいでしょう。どうもありがとうございました! –

+0

はいコードを共有してください – pbush25

+0

あなたのプロジェクト全体にリンクするのはあまり役に立ちません。それは索引付けすることはできず、他の人々は将来それを見ることができません。あなたの質問に関連するビットのコードを編集として追加してください。 – pbush25

関連する問題