2016-04-16 7 views
0

so habe ich das Web für die letzten paar Tage gesucht und kann immer noch nicht scheinen, eine Lösung zu finden, die funktioniert. Ich verwende Core Bluetooth und versuche, Daten von einem Arduino zu erhalten. Hier ist der Code:Core Bluetooth Funktion

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

ich die eingehenden Daten sehen konnte print(str) ohne ein Problem mit, aber wie in der Welt würde ich übertrage diese empfangenen Daten an einem anderen schnellen Datei und es schließlich auf eine UILabel anzuzeigen? Jedes Mal, wenn ich versuche, str außerhalb der Funktion zu verwenden, sagt Xcode weiterhin "erwartete Deklaration". Mein Versuch des Delegierten ist wie folgt:

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

Mit dieser Variablen innerhalb der Klasse definiert, die die Funktion befindet sich in var delegate: BluetoothSerialDelegate! Obwohl ich keine Fehler bekommen, wenn ich

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

Innerhalb des Viewcontroller nennen. , Ich kann die Daten nicht sehen, wie ich es getan habe, als es von der ursprünglichen Funktion angerufen hat. Was könnte das Problem sein? Danke im Voraus!

Antwort

0

Deklarieren Sie die Zeichenfolge in Ihrer h-Datei, damit Sie eine globale Variable haben. Oder Sie können einfach Benutzer-Benutzereinstellungen speichern, die den Zugriff aus einer anderen Datei erleichtern würden.

0

Sie haben einen Delegierten ... warum nicht verwenden? In der Klasse, in der Sie die Daten anzeigen möchten, stimmen Sie mit Ihrem Delegaten überein, und implementieren Sie die Delegate-Methode serialDidReceiveString:. Wenn dann die Daten empfangen werden, wird die Delegate-Methode in der anderen Ansicht aufgerufen, und Sie können dann Ihr Label aktualisieren.

+0

Vielen Dank! Dies ist jedoch mein erstes Projekt in Swift und viele der Informationen wurden von verschiedenen Foren zusammengeführt. Würden Sie mir bitte näher erläutern, wie ich das mit der Delegiertenmethode machen würde? Ich habe es versucht, aber festgestellt, dass, sobald die Funktion durch die andere Swift-Datei aufgerufen wird, es nicht mehr die empfangenen Daten anzeigt. Auch wenn Sie möchten, wäre ich mehr als glücklich, den Code mit Ihnen zu teilen. Vielen Dank! –

+0

Ja bitte teilen Sie den Code – pbush25

+0

Es ist nicht sehr hilfreich, zu Ihrem gesamten Projekt zu verknüpfen. Es kann nicht indexiert werden und andere Leute werden es in der Zukunft nicht sehen können. Fügen Sie Ihrer Frage die relevanten Codebeispiele als Bearbeitung hinzu. – pbush25

Verwandte Themen