所以我过去几天一直在网上搜索,似乎仍然无法找到有效的解决方案。我正在运行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中,我无法看到从初始函数调用时的数据。问题可能是什么?提前致谢!
答案 0 :(得分:0)
在你的h文件中声明字符串,这样你就有了一个全局变量。或者您可以将其保存为用户默认值,这样可以轻松地从其他文件访问。
答案 1 :(得分:0)
你有代表......为什么不使用它?在类中,您希望显示数据,符合您的委托,并实现委托方法serialDidReceiveString:
。然后,当收到数据时,将在另一个视图中调用委托方法,然后您可以更新标签。