如何解决SwiftUI:如果文本值为nil或N / A,则使用if语句隐藏文本
我正在尝试在UIKit中做一些简单的事情-但无法在SwiftUI中工作。
我正在从API中提取数据。该数据是动态的-呼叫的某些部分可能不会每次都出现。我通过将所有数据设为可选并使用nil运算符在没有数据的文本字段中返回“ N / A”来保护应用程序。在UIKit中,我能够简单地使用if语句:
if self.cityLabel.text == "N/A" {
self.cityLabel.isHidden = true
}
HStack() {
Text(self.model?.city ?? "N/A")
}
显示数据时,显示无任何问题。但是,我不确定在哪里访问此属性或放置if语句,因为此数据在View类中并且不接受函数。
因此,基本上,在SwiftUI中,如何隐藏该文本并使周围的块“向上移动”(例如显示:无)?如何在View代码中实现if语句?
我敢肯定这很简单,但我们将不胜感激! :)
解决方法
if
,if-let
和if-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 举报,一经查实,本站将立刻删除。