Добавление закрытия .onReceive в список SwiftUI -> Странные ошибки - PullRequest
0 голосов
/ 13 февраля 2020

Я несколько часов бьюсь головой об этом, и я начинаю go сходить с ума. У меня есть представление SwiftUI, определенное так:

struct ExistingClaims: View {
  @ObservedObject var viewModel = ExistingClaimsListModel()
  @EnvironmentObject var newClaim : NewClaimModel

  var body: some View {
    NavigationView{
      List(viewModel.claims) { dataItem in
        NavigationLink(destination: ClaimDetails()){
          HStack(spacing: 10){
            VStack(alignment: .leading, spacing: 3) {
              Text(dataItem.subject)
              Text(String(dataItem.caseNumber)).font(.subheadline).italic()
            }
          }
        }
      }
      // Navigation Bar
      .navigationBarTitle(Text("Exisitng Claims"), displayMode: .inline)
      // Navigation bar button
      .navigationBarItems(
        leading: Button("Logout") {
          self.viewModel.claims = []
          UserAccountManager.shared.logout()
        },
        trailing: NavigationLink(
        destination: NewClaim()) {
          Image(systemName: "plus")
        }
      )
    }
    .onAppear{
      print("On Appear firing for ExistingClaims()")
      self.viewModel.fetchDataFromSalesforce()
    }
  }
}

Все это прекрасно работает. Пока я не попытаюсь добавить предложение .onReceive в список следующим образом:

List(viewModel.claims) { dataItem in
    NavigationLink(destination: ClaimDetails()){
      HStack(spacing: 10){
        VStack(alignment: .leading, spacing: 3) {
          Text(dataItem.subject)
          Text(String(dataItem.caseNumber)).font(.subheadline).italic()
        }
      }
    }
  }.onReceive(self.newClaim.complete){ data in
    print(data)
  }

Как только я добавлю это onReceive, я получу действительно странную ошибку, показанную на этом снимке экрана: Screenshot showing error

Есть идеи, что происходит? Моя конечная цель - обновить sh список данных, когда публикуемое свойство объекта окружающей среды (или состояние, которое я пробовал оба) обновляет

1 Ответ

0 голосов
/ 13 февраля 2020

Я не вижу NewClaimModel, но предположим, что это должно быть следующим образом

  }.onReceive(self.newClaim.$complete){ data in // .$complete is Publisher
    print(data)
  }
...