在 Swift 中匹配数据类型

Posted

技术标签:

【中文标题】在 Swift 中匹配数据类型【英文标题】:Matching data type in Swift 【发布时间】:2019-10-24 13:52:01 【问题描述】:

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

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

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

这是我收到的错误消息

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

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

【问题讨论】:

Checking if an object is a given type in Swift的可能重复 【参考方案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

两种可能的解决方案:

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

    if beacon.beaconType == 2  ...
    

    由于AltBeaconBeacon 的子类,请检查实例的类型

    if beacon is AltBeacon  ...
    

【讨论】:

以上是关于在 Swift 中匹配数据类型的主要内容,如果未能解决你的问题,请参考以下文章

Firebase iOS Swift 致命错误:NSArray 元素无法匹配 Swift Array 元素类型

Swift JSON 序列化类型不匹配

NSArray 元素无法匹配 Swift Array 元素类型

错误:“模式无法匹配 'URLRequest' 类型的值”在 swift 中

从匹配类型的字符串中获取 Swift 枚举类型,而不是 rawValue

Swift 3:NSArray 元素无法匹配 Swift Array 元素类型