在swiftyui主体中,基于news.urlToImage值,我需要能够加载另一个视图(LOadRemoteImageView,这只是另一个接受可选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 {
$0 != nil ? LoadRemoteImageView(withURL: $0) : Text("no image")

}

最佳答案

这都是关于类型的...行表达式的结果必须生成单个类型。因此,如果您喜欢三元运算符,则应像

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

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

10-08 08:05