swift - 视图主体中的 swiftui 三元运算符
问题描述
在 swiftyui 正文中,基于 news.urlToImage 值,我需要能够加载另一个视图(LOadRemoteImageView,这只是另一个接受可选 url 字符串以加载远程图像的视图),或者显示文本字符串“没有图片网址”。
按照下面的语法,它工作正常
if news.urlToImage == nil {
Text("no image url")
}else {
LoadRemoteImageView(withURL: news.urlToImage!).frame(width: 140, height: 140)
}
但是,当尝试内联代码时,它会失败,并且智能感知没有正确的错误消息
news.urlToImage == nil ? Text("no image") : LoadRemoteImageView(withURL: news.urlToImage!)
如果 urlToImage: String 不为零,也尝试使用 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
的更好。
推荐阅读
- json - 如何在 JS 中导入 btoa?
- r - R:如何将数据拆分为训练集和测试集,同时保留变量的比例和分布?
- java - UTF-8 导出与 xwpf 不一致
- .net - 什么定义了将显示消息的输出窗口的类别?
- python - 句子被标记为 pandas 中的单词,但索引从 0 到第一句的长度,第二句再次从 0 开始
- javascript - Google drive api:如何从我的脚本中获取绝对链接(最终)作为返回
- java - Android QR Code Scanner 相机未在 Fragment 中打开
- flutter - 未处理的异常:NoSuchMethodError:在 null 上调用了 getter 'length'。共享偏好
- node.js - 如何从 Express.Router.post() 中获取 Mongoose.Schema 属性?(+发送 Firebase 通知)
- python - 在忽略大小写敏感性的列表中查找最常见的字符串