Swift 与 Objective-C 之间蓝牙连接委托方法转换 - didDiscoverPeripheral
Objective-C 代码
- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI {
// 如果没有这个设备进行添加
if(![self.peripherals containsObject:peripheral]) {
[self.peripherals addObject:peripheral];
}
}
Swift 代码
func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {
// 如果没有这个设备进行添加
if !self.peripherals.contains(peripheral) {
self.peripherals.append(peripheral)
}
}
代码解析:
- 方法名: Objective-C 中的
centralManager:didDiscoverPeripheral:advertisementData:RSSI:方法在 Swift 中被改写为centralManager(_:didDiscover:advertisementData:rssi:),遵循 Swift 的命名规范。 - 参数类型: Swift 中的参数类型使用
_进行区分,并将参数类型明确地声明出来。例如central: CBCentralManager和peripheral: CBPeripheral等。 - 数组类型: Swift 中的数组使用
[String : Any]来表示字典类型,而 Objective-C 中则使用NSDictionary。 - 添加设备逻辑: Swift 中使用
append()方法将新的外设添加到peripherals数组中,而 Objective-C 中则使用addObject:方法。
总结:
本示例展示了将 Objective-C 中的蓝牙连接委托方法 centralManager:didDiscoverPeripheral:advertisementData:RSSI: 转换为 Swift 代码的步骤。通过代码对比,您可以更好地理解 Objective-C 和 Swift 在蓝牙连接方面的差异,并轻松进行代码移植。
原文地址: https://www.cveoy.top/t/topic/bJKM 著作权归作者所有。请勿转载和采集!