问题:解开Optional时无法处理nil,因此我决定使用if let语句,因为我收到标题错误。
目标:如果urlString为nil,我希望让foreach循环跳过生成AnimatedImage对象的过程。
HStack {
ForEach(0..<3, id: \.self) { column in
if let post = self.observed.posts[safe: (row * 3 + column)] {
AnimatedImage(url: URL(string: post.image)).resizable().frame(width: self.width, height: self.width)
}
}
}
我创建了一个扩展程序来处理导致错误的数组错误。
答案 0 :(得分:1)
在SwiftUI 1.0(以及if let
btw)中不允许使用switch
语句。您的案例可以通过查看私有帮助器函数来解决,如下所示(草率的,`原因是不可测试的,但思路应明确)
private func image(in column: Int) -> some View {
let post = self.observed.posts[safe: (row * 3 + column)]
return Group {
if post != nil {
AnimatedImage(url: URL(string: post.image))
.resizable().frame(width: self.width, height: self.width)
}
}
}
现在进入
ForEach(0..<3, id: \.self) { column in
self.image(for: column)
}