微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SwiftUI:如果文本值为nil或N / A,则使用if语句隐藏文本

如何解决SwiftUI:如果文本值为nil或N / A,则使用if语句隐藏文本

我正在尝试在UIKit中做一些简单的事情-但无法在SwiftUI中工作。

我正在从API中提取数据。该数据是动态的-呼叫的某些部分可能不会每次都出现。我通过将所有数据设为可选并使用nil运算符在没有数据的文本字段中返回“ N / A”来保护应用程序。在UIKit中,我能够简单地使用if语句:

if self.cityLabel.text == "N/A" {
    self.cityLabel.isHidden = true
}

现在在SwiftUI中,我有以下内容


HStack() {

     Text(self.model?.city ?? "N/A")
                            
}

显示数据时,显示无任何问题。但是,我不确定在哪里访问此属性或放置if语句,因为此数据在View类中并且不接受函数

因此,基本上,在SwiftUI中,如何隐藏该文本并使周围的块“向上移动”(例如显示:无)?如何在View代码中实现if语句?

我敢肯定这很简单,但我们将不胜感激! :)

解决方法

ifif-letif-else现在也可以在View内部使用(我认为Xcode 12中已引入)。这应该起作用:

var body: some View {
    HStack() {
        if let city = self.model?.city {
            Text(city)
        }                      
    }
}

编辑:如果您不关心self.model?.city的内容,只需对nil做一个简单的布尔测试即可。

var body: some View {
    HStack() {
        if self.model?.city != nil {
            /// self.model?.city is not nil!
            Text("Not nil")
        }                  
    }
}

编辑2:好,因此,如果文本为“ N / A”,则您不想显示它。但是,由于文本本身(self.model?.city)是可选的,因此您需要先将其解包。

var body: some View {
    HStack() {
        if let city = self.model?.city { /// unwrap self.model?.city
            if city != "N/A" { /// city is not "N/A"!
                
                /// show the text
                Text(city)
            } /// else,don't show anything
        }               
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。