我正在尝试将数据发布到列表中,但始终收到错误消息“无法推断复杂的闭包返回类型;添加显式类型以消除歧义' 我该如何解决?
import SwiftUI
struct ContentView: View {
@State var data: [Post] = [Post]()
@ObservedObject var networkManager = NetworkManager()
@State private var searchTerm: String = "" {
didSet {
print(searchTerm)
}
}
var body: some View {
List { // ERROR SHOWS UP HERE
SearchBar(text: $searchTerm)
ForEach(data) { post in
Text(post.fullname ?? "null")
}
}
.onAppear {
self.reload()
}
.onReceive(self.networkManager.posts, perform: { _ in
self.reload()
})
}
private func reload() {
networkManager.fetchData(playerName: "messi")
self.data = networkManager.posts
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
答案 0 :(得分:1)
假设您的NetworkManage.posts
是@Published
属性,必须按以下方式指定要查看的订户
.onReceive(self.networkManager.$posts, perform: {_ in // << fixed !!
self.reload()
})
注意:顺便说一句,didSet
对@State
不起作用,所以不要花时间在上面。