Reputation: 23
I'm trying to post data to the list but keep getting the error 'Unable to infer complex closure return type; add explicit type to disambiguate' how do I fix this?
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()
}
}
Upvotes: 2
Views: 237
Reputation: 257493
Assuming your NetworkManage.posts
is @Published
property the subscriber in view have to be specified as follow
.onReceive(self.networkManager.$posts, perform: {_ in // << fixed !!
self.reload()
})
Note: btw, didSet
does not work for @State
, so don't spend time on that.
Upvotes: 1