核心蓝牙功能

时间:2016-04-16 23:28:47

标签: ios xcode swift bluetooth sdk

所以我过去几天一直在网上搜索,似乎仍然无法找到有效的解决方案。我正在运行Core Bluetooth,并试图从Arduino获取数据。这是代码:

//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)看到传入的数据,但是我将如何将这些接收的数据传输到另一个swift文件并最终将其显示在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中,我无法看到从初始函数调用时的数据。问题可能是什么?提前致谢!

2 个答案:

答案 0 :(得分:0)

在你的h文件中声明字符串,这样你就有了一个全局变量。或者您可以将其保存为用户默认值,这样可以轻松地从其他文件访问。

答案 1 :(得分:0)

你有代表......为什么不使用它?在类中,您希望显示数据,符合您的委托,并实现委托方法serialDidReceiveString:。然后,当收到数据时,将在另一个视图中调用委托方法,然后您可以更新标签。