在另一种方法中访问 let/var Swift
Access a let/var in another method Swift
我目前正在使用 CoreBluetooth 进行开发,并且我已经设法获得 RSSI 强度。我可以在控制台中打印它,但是当我想在 IBAction 中使用它时,它不起作用。我想这是因为 RSSI 变量不是局部变量。
这是我从中获取 RSSI 强度的方法:
func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {
let device = (advertisementData as NSDictionary).object(forKey: CBAdvertisementDataLocalNameKey) as? String
let rssi = RSSI // The const that stores the RSSI-data
print(rssi)
if device?.contains(BLE_NAME) == true {
self.manager.stopScan()
self.peripheral = peripheral
self.peripheral.delegate = self
manager.connect(peripheral, options: nil)
}
}
这是我希望 rssi const 所在的 IBAction:
@IBAction func btnPressed(_ sender: Any) {
rssiLbl.text = "\(rssi)"
}
但是,我不知道该怎么做。我敢打赌,这对你们大多数人来说都是一个非常基本的问题,但我就是做不到。
正如其他人所说。声明rssi为class级变量:
private var rssi: NSNumber?
func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {
let device = (advertisementData as NSDictionary).object(forKey: CBAdvertisementDataLocalNameKey) as? String
self.rssi = RSSI
print(self.rssi)
if device?.contains(BLE_NAME) == true {
self.manager.stopScan()
self.peripheral = peripheral
self.peripheral.delegate = self
manager.connect(peripheral, options: nil)
}
}
@IBAction func btnPressed(_ sender: Any) {
if let rssi = self.rssi {
rssiLbl.text = "\(rssi)"
} else {
rssiLbl.text = "Undetermined"
}
我目前正在使用 CoreBluetooth 进行开发,并且我已经设法获得 RSSI 强度。我可以在控制台中打印它,但是当我想在 IBAction 中使用它时,它不起作用。我想这是因为 RSSI 变量不是局部变量。
这是我从中获取 RSSI 强度的方法:
func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {
let device = (advertisementData as NSDictionary).object(forKey: CBAdvertisementDataLocalNameKey) as? String
let rssi = RSSI // The const that stores the RSSI-data
print(rssi)
if device?.contains(BLE_NAME) == true {
self.manager.stopScan()
self.peripheral = peripheral
self.peripheral.delegate = self
manager.connect(peripheral, options: nil)
}
}
这是我希望 rssi const 所在的 IBAction:
@IBAction func btnPressed(_ sender: Any) {
rssiLbl.text = "\(rssi)"
}
但是,我不知道该怎么做。我敢打赌,这对你们大多数人来说都是一个非常基本的问题,但我就是做不到。
正如其他人所说。声明rssi为class级变量:
private var rssi: NSNumber?
func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {
let device = (advertisementData as NSDictionary).object(forKey: CBAdvertisementDataLocalNameKey) as? String
self.rssi = RSSI
print(self.rssi)
if device?.contains(BLE_NAME) == true {
self.manager.stopScan()
self.peripheral = peripheral
self.peripheral.delegate = self
manager.connect(peripheral, options: nil)
}
}
@IBAction func btnPressed(_ sender: Any) {
if let rssi = self.rssi {
rssiLbl.text = "\(rssi)"
} else {
rssiLbl.text = "Undetermined"
}