【问题标题】:How to do unwrapping issue inside If-let statement?如何在 If-let 语句中进行解包问题?
【发布时间】:2022-09-23 17:13:17
【问题描述】:

我使用if let 来获取对象,如果它不是零的话。但我还需要检查其他条件,即如果\"treatmentContext.patientTreatment.canWritePermissions.contains(treatmentContext.pathPatientTreatment.owner\"。我可以通过在第一条语句后加逗号来做到这一点,但这里的问题是,我需要解开 treatmentContext.pathPatientTreatment.owner 的值,在这里我不知道我需要在哪里解开它,以便我的 if 条件得到满足所有条件时通过。 以下是供参考的代码。

if let treatmentContext = IoC.resolve(Treatment.self, from: .treatment), treatmentContext.patientTreatment.canWritePermissions.contains(treatmentContext.pathPatientTreatment.owner) 
     {
    self.presentNavigation(isNew: isNew)
    }
  • if let treatmentContext = IoC.resolve(Treatment.self, from: .treatment), let owner = treatmentContext.pathPatientTreatment.owner, treatmentContext.patientTreatment.canWritePermissions.contains(owner) { self.presentNavigation(isNew: isNew) }

标签: swift optional-parameters


【解决方案1】:

你已经知道可以用, 分隔条件,所以再做一次,但这次是另一个可选的绑定子句:

if let treatmentContext = IoC.resolve(Treatment.self, from: .treatment), 
   let owner = treatmentContext.pathPatientTreatment.owner,
   treatmentContext.patientTreatment.canWritePermissions.contains(owner) {
    self.presentNavigation(isNew: isNew)
}

您可以在 if 中使用 , 分隔任意数量的可选绑定子句、Bool 条件或 case ... 模式。

【讨论】:

    猜你喜欢
    • 2014-03-29
    • 1970-01-01
    • 1970-01-01
    • 2022-12-07
    • 2018-09-16
    • 2017-05-29
    • 1970-01-01
    • 1970-01-01
    • 2015-03-24
    相关资源
    最近更新 更多