无法推断复杂的闭包返回类型swiftUI

时间:2020-05-12 15:01:46

标签: swift xcode swiftui

我正在尝试将数据发布到列表中,但始终收到错误消息“无法推断复杂的闭包返回类型;添加显式类型以消除歧义' 我该如何解决?

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()
    }
}

1 个答案:

答案 0 :(得分:1)

假设您的NetworkManage.posts@Published属性,必须按以下方式指定要查看的订户

.onReceive(self.networkManager.$posts, perform: {_ in    // << fixed !!
    self.reload()
})

注意:顺便说一句,didSet@State不起作用,所以不要花时间在上面。