首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果其他条件正确,如何处理多个条件?

如果其他条件正确,如何处理多个条件?
EN

Stack Overflow用户
提问于 2019-04-26 11:30:48
回答 2查看 62关注 0票数 0

我有三个条件:

  1. data.weightmyoutput都是nil
  2. myoutput没有价值
  3. data.weightmyoutput都有一个值 重写func viewWillAppear(_ .viewWillAppear: Bool) {超级.viewWillAppear(动画) self.navigationItem.hidesBackButton = true let myOutput = UserDefaults.standard.string(forKey:"height")让dateFormator = DateFormatter() dateFormator.dateFormat = "dd.MM.yyyy“let data =WeightTracker.mr_findFirst(格式:"date == %@",dateFormator.string(from: Date()作为?如果WeightTracker myOutput == nil && data?.weight == nil { bmiLabel.text =WeightTracker {让myOutput: AnyObject?= UserDefaults.standard.object(forKey:“高度”)作为AnyObject var sum = (myOutput as!( NSString).doubleValue / 1000设total1 = sum * sum = Double(Int(data.weight!)!) / total1 let dye =总计/100.00 bmiLabel.text =String(染料)}}

应只计算第三个条件的总和。处理这件事的正确方法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-26 11:36:51

代码语言:javascript
复制
if let myOutput = UserDefaults.standard.string(forKey: "height") as? NSString , let weight = data?.weight {
    let dateFormator = DateFormatter()
    dateFormator.dateFormat = "dd.MM.yyyy"
    if let data = WeightTracker.mr_findFirst(with: NSPredicate(format: "date == %@", dateFormator.string(from: Date()))) as? WeightTracker{
        var sum = myOutput.doubleValue   / 1000
        let total1 = sum * sum
        let total = Double(Int(weight)!) / total1
        let dye = total/100.00

        bmiLabel.text = String(dye)
    }
} else {
    bmiLabel.text = "--"
}
票数 1
EN

Stack Overflow用户

发布于 2019-04-26 12:15:10

你为什么不往另一边走呢?

代码语言:javascript
复制
if myOutput != nil && data?.weight != nil {
    // Your logic here
}
else {
    bmiLabel.text = "--"
}

或者可以将if完全替换为if-let,以提供安全的展开并消除可选的链接和/或强制展开。

代码语言:javascript
复制
if let myOutput = myOutput, let weight = data?.weight {
    // Your logic here
}
else {
    bmiLabel.text = "--"
}

或者,如果您希望提供早期转义,则甚至可以使用guard-let

代码语言:javascript
复制
guard let myOutputUnwrapped = myOutput, let weight = data?.weight else {
    bmiLabel.text = "--"
    return 
}

    /* Your logic here */

if-letguard-let的优点在于,您已经可以使用一个未包装的值,因此不必担心变量的!?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55866708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档