【问题标题】:Matching data type in Swift在 Swift 中匹配数据类型
【发布时间】:2025-12-23 17:00:12
【问题描述】:

我正在使用 BeaconKit 来检测附近的信标。

我想检查检测到的信标是否为AltBeacon 类型。由于我使用的匹配表达式,我的代码显示错误。

if beacon.beaconType == AltBeacon {
     print("Detected an AltBeacon")
}

这是我收到的错误消息

二元运算符== 不能应用于Int' 和AltBeacon.Type 类型的操作数

我可以改用什么来纠正我的匹配表达式!谢谢你

【问题讨论】:

标签: swift expression


【解决方案1】:

你试过了吗

if beacon.beaconType is AltBeacon {
   print("Detected an AltBeacon")
}

或者,您可以检查

if let beacon.beaconType as? AltBeacon {
   print("Detected an AltBeacon")
} else {
// handle
}

【讨论】:

  • 实际上根据源代码,if 表达式的计算结果总是false
【解决方案2】:

错误很明显。 beaconTypeInt。除了Int

两种可能的解决方案:

  1. 找出AltBeacon的整数值(2只是一个例子)并比较

    if beacon.beaconType == 2 { ...
    
  2. 由于AltBeaconBeacon 的子类,请检查实例的类型

    if beacon is AltBeacon { ...
    

【讨论】: