【问题标题】:Unable to infer complex closure return type swiftUI无法推断复杂的闭包返回类型 swiftUI
【发布时间】:2020-05-12 15:01:46
【问题描述】:

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

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

【问题讨论】:

    标签: swift xcode swiftui


    【解决方案1】:

    假设您的 NetworkManage.posts@Published 属性,则视图中的订阅者必须指定如下

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-06
      相关资源
      最近更新 更多