Swift中如何遍历Request对象内的Bottle数组获取name属性
因为你定义的RequestData是带关联值的枚举类型,无法直接访问内部存储的属性,需要先匹配枚举的case取出关联的[Bottle]数组,之后就可以正常遍历访问每个Bottle实例的name属性。
实现代码
通用写法(适配多类型返回)
switch requestData.data { case .bottle(let bottles): // 遍历打印所有name for bottle in bottles { print(bottle.name) } // 把所有name提取为数组的快捷写法 let allBottleNames = bottles.map(\.name) print(allBottleNames) }
简化写法(确定返回类型为bottle时使用)
if case .bottle(let bottles) = requestData.data { let allNames = bottles.map { $0.name } // 直接使用allNames数组即可 }
如果后续你新增了其他返回对象类型,只需要在RequestData、ObjectType枚举中添加对应的case,再在switch分支中补充对应类型的处理逻辑即可,原有架构不需要做大量改动。
内容的提问来源于stack exchange,提问作者Trenton
相关产品推荐
相关产品推荐

