我有一个这样的枚举

enum TheType  {
    case a (CustomData)
    case b (NSDictionary)
    case c (String?)
    case d 
    case e
    ...
}

在一个特定的地方,我只是想判断类型是否为b,然而在咨询了几个关于if和case的教程并try 了几种排列之后,我仍然无法编译它,这是最新的try 变体:

 let theType = TheType.b([:])
 if case let TheType.b(_) ==  theType {...}

产生错误: ‘_’只能出现在赋值左侧的模式中

或者,这会产生一个不同的错误:

 if case let TheType.b(let theDictionary) ==  theType {...}

交换对象以使Type位于==的左侧也会产生错误.

如何使用If语句判断枚举值的类型?

推荐答案

If case letnot,只是对等式的判断,==运算符是错误的.

要么就是

if case let TheType.b(theDictionary) = theType {...}

if case TheType.b(let theDictionary) = theType {...}

如果关联的值无关紧要,

if case TheType.b(_) = theType {...}

或 even

if case TheType.b = theType {...}

Note the assignment operat或 and the different positions of let

Swift相关问答推荐

Swift:iVar + Equatable上的协议约束

修改数组中每个类实例的属性

为什么枚举上的.allCases.forEach不是循环(继续和中断不起作用)?

为什么这个快速代码不显示文本字段?

为什么 Swift URL 的 init?(string: String,relativeTo: URL?) 仅添加协议?

如何返回一个通过 SwiftUI 中的另一个协议间接继承 View 协议的 struct ?

是否有一个带有空初始值设定项的 Swift 类/ struct 的标准协议

如何为等待函数调用添加超时

使用 RxSwift 围绕 async/await 方法创建 Observable

如何自己实现同一个 iOS 16 锁屏圆形小部件?

持久化字符串列表属性 RealmSwift

令人满意的 var body:协议扩展中的一些视图

SwiftUI 4 列表初始化程序在 iOS 中不可用

如何在 Swift 中将 XPC 自定义类列入白名单?

Swift 中惰性 var 的优势是什么

不能从非开放类继承 swift

如何发送静默推送通知有效负载

TabView 在切换选项卡时重置导航堆栈

Swift UITableView reloadData 在一个闭包中

如何在 iOS 上的 Swift 中获取 sharedApplication?