如何在带关联值的Swift枚举中结合if与case判断类型
如何判断Swift枚举实例是否为带关联值的case b
针对你定义的枚举,判断实例是否为case b有两种常见写法,取决于你是否需要获取关联的NSDictionary值:
1. 仅判断case类型,不需要关联值
直接使用if case模式匹配,语法是if case 枚举case = 实例,不需要加==:
let theType = TheType.b([:]) if case .b = theType { // 确认是case b,执行逻辑 } // 也可以明确写出枚举类型: if case TheType.b = theType { // ... }
如果想用通配符_忽略关联值,正确写法是:
if case .b(_) = theType { // ... }
2. 需要同时获取关联的NSDictionary值
如果需要使用case b绑定的字典,可以在模式里直接提取:
if case let .b(dict) = theType { // 这里dict就是关联的NSDictionary实例 print(dict) } // 或者写成: if case TheType.b(let dict) = theType { // 使用dict }
你之前写法的问题
你错误地在if case里使用了==,这不符合Swift模式匹配的语法。if case的核心是模式绑定,用=将枚举case模式和实例关联,而非比较相等。
内容的提问来源于stack exchange,提问作者Piepants
相关产品推荐
相关产品推荐

