gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 02:49:05 24 4
gpt4 key购买 nike

我正在尝试在 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 中隐藏该文本并使其周围的 block 在 HTML 中“向上移动”(如显示:无)?如何在 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 进行简单的 bool 测试即可。

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
}
}
}

关于ios - SwiftUI:如果文本值为 nil 或 N/A,则使用 if 语句隐藏文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64147498/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com