2016-04-16 3 views
0

поэтому я искал в Интернете последние пару дней и все еще не могу найти решение, которое работает. Я запускаю Core 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 продолжает указывать «ожидаемое объявление». Моя попытка делегата является следующим:

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

С помощью этой переменной, определенной в классе, что функция находится в var delegate: BluetoothSerialDelegate! Хотя я не получаю ошибки, когда я называю

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

Внутри ViewController. , Я не могу видеть данные, как я сделал, когда он вызывал из начальной функции. Каким может быть этот вопрос? Заранее спасибо!

ответ

0

Объявите строку в вашем файле h, чтобы иметь глобальную переменную. Или вы можете просто сохранить его пользовательские настройки по умолчанию, что упростит доступ из другого файла.

0

У вас есть делегат ... почему бы не использовать его? В классе, который вы хотите отобразить данные, совместите с вашим делегатом и реализуете метод делегирования serialDidReceiveString:. Затем, когда данные будут получены, метод delegate будет вызываться в другом представлении, а затем вы можете обновить свой ярлык.

+0

Большое вам спасибо! Тем не менее, это мой первый проект в Swift, и большая часть информации была собрана на разных форумах. Не могли бы вы объяснить мне более подробно, как я буду делать это с помощью метода делегата? Я попытался это сделать, но обнаружил, что, как только функция вызывается, хотя другой быстрый файл, он больше не отображает полученные данные. Кроме того, если вы хотите, я был бы более счастлив поделиться с вами кодом. Большое спасибо! –

+0

Да, пожалуйста, поделитесь кодом – pbush25

+0

Не очень полезно ссылаться на весь проект. Он не может быть проиндексирован, и другие люди не смогут увидеть его в будущем. Пожалуйста, добавьте соответствующие биты кода в свой вопрос в качестве редактирования. – pbush25