View 体中的swiftui三元运算符

标签 swift swiftui conditional-operator

在 swiftyui 主体内,基于 news.urlToImage 值,我需要能够加载另一个 View (LOadRemoteImageView,这只是另一个接受可选 url 字符串来加载远程图像的 View ),或者显示一个文本字符串“没有图片网址”。

按照下面的语法,它工作正常

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 来显示两个 View 中的任何一个,但也失败了
news.urlToImage.map {
$0 != nil ? LoadRemoteImageView(withURL: $0) : Text("no image")

}

最佳答案

这都是关于类型的……行表达式 的结果必须 生成单一类型。所以如果你喜欢三元运算符,你应该像这样使用它

news.urlToImage == nil ? AnyView(Text("no image")) : 
     AnyView(LoadRemoteImageView(withURL: news.urlToImage!))

或类似的东西……对我来说,常规的 if/else 更好。

关于 View 体中的swiftui三元运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60027295/

相关文章:

core-data - iOS 13.4 CoreData SwiftUI 应用程序在设备上崩溃并显示 "EXC_BREAKPOINT (code=1, subcode=0x1f3751f08)"

swiftui - 如何隐藏 Digital Crown 滚动指示器?

java - if语句中的条件运算符?

c++ - C++ 中的条件运算符还能为我做什么?

swift - 复制多个 NSImage 到 NSPasteboard

swift - iOS 14 Widget 每天自动刷新

Swift shouldSelectViewController 使用alertController

ios - 在 SwiftUI 中为圆角矩形创建均匀分布的虚线轮廓

thymeleaf - 如何根据 thymeleaf 中的条件将样式应用于 div?

ios - 当标签栏点击两次时禁用自动弹出到 Root View Controller