视图主体中的 swiftui 三元运算符
swiftui ternary operator in view body
在 swiftyui 体内,基于 news.urlToImage 值,我需要能够加载另一个视图(LOadRemoteImageView,这只是另一个接受可选 url 字符串加载的视图远程图像),或者显示文本字符串 "no image url".
按照下面的语法,它工作正常
if news.urlToImage == nil {
Text("no image url")
}else {
LoadRemoteImageView(withURL: news.urlToImage!).frame(width: 140, height: 140)
}
然而,当尝试内联代码时,它失败了,intellisense 没有正确的错误消息
news.urlToImage == nil ? Text("no image") : LoadRemoteImageView(withURL: news.urlToImage!)
如果 urlToImage: String 不为 nil,也尝试使用 map 显示两个视图中的任何一个,但同样失败
news.urlToImage.map {
[=12=] != nil ? LoadRemoteImageView(withURL: [=12=]) : Text("no image")
}
一切都是关于类型的……行表达式的结果必须生成单一类型。所以如果你喜欢三元运算符,你应该像
一样使用它
news.urlToImage == nil ? AnyView(Text("no image")) :
AnyView(LoadRemoteImageView(withURL: news.urlToImage!))
或类似的东西...对我来说,常规 if/else
更好。
在 swiftyui 体内,基于 news.urlToImage 值,我需要能够加载另一个视图(LOadRemoteImageView,这只是另一个接受可选 url 字符串加载的视图远程图像),或者显示文本字符串 "no image url".
按照下面的语法,它工作正常
if news.urlToImage == nil {
Text("no image url")
}else {
LoadRemoteImageView(withURL: news.urlToImage!).frame(width: 140, height: 140)
}
然而,当尝试内联代码时,它失败了,intellisense 没有正确的错误消息
news.urlToImage == nil ? Text("no image") : LoadRemoteImageView(withURL: news.urlToImage!)
如果 urlToImage: String 不为 nil,也尝试使用 map 显示两个视图中的任何一个,但同样失败
news.urlToImage.map {
[=12=] != nil ? LoadRemoteImageView(withURL: [=12=]) : Text("no image")
}
一切都是关于类型的……行表达式的结果必须生成单一类型。所以如果你喜欢三元运算符,你应该像
一样使用它news.urlToImage == nil ? AnyView(Text("no image")) :
AnyView(LoadRemoteImageView(withURL: news.urlToImage!))
或类似的东西...对我来说,常规 if/else
更好。