如何在if-let语句中进行可选值解包并结合多条件判断?
解决可选值解包与多条件判断的问题
你可以在if-let的条件链中新增可选值解包步骤,先把treatmentContext.pathPatientTreatment.owner解包为非可选值,再执行包含判断。所有条件会按顺序验证,只有全部满足才会进入代码块:
if let treatmentContext = IoC.resolve(Treatment.self, from: .treatment), let owner = treatmentContext.pathPatientTreatment.owner, treatmentContext.patientTreatment.canWritePermissions.contains(owner) { self.presentNavigation(isNew: isNew) }
逻辑说明:
- 第一步:确认
treatmentContext成功解析(非nil) - 第二步:将
pathPatientTreatment.owner解包为非可选的owner变量,若该值为nil则整个条件直接不成立 - 第三步:检查
canWritePermissions集合中是否包含已解包的owner
这种写法既能保证可选值的安全解包,又能让所有判断条件清晰有序,避免直接使用可选值导致的编译错误。
内容的提问来源于stack exchange,提问作者Developer
相关产品推荐
相关产品推荐

