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: CBCentralManagerperipheral: CBPeripheral 等。
  • 数组类型: Swift 中的数组使用 [String : Any] 来表示字典类型,而 Objective-C 中则使用 NSDictionary
  • 添加设备逻辑: Swift 中使用 append() 方法将新的外设添加到 peripherals 数组中,而 Objective-C 中则使用 addObject: 方法。

总结:

本示例展示了将 Objective-C 中的蓝牙连接委托方法 centralManager:didDiscoverPeripheral:advertisementData:RSSI: 转换为 Swift 代码的步骤。通过代码对比,您可以更好地理解 Objective-C 和 Swift 在蓝牙连接方面的差异,并轻松进行代码移植。

Swift 与 Objective-C 之间蓝牙连接委托方法转换 - didDiscoverPeripheral

原文地址: https://www.cveoy.top/t/topic/bJKM 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录