声明后无法访问可观察对象中的变量(SwiftUI)

时间:2020-06-29 10:38:12

标签: swift google-cloud-firestore swiftui

我正在使用SwiftUI和Firestore开发一个应用程序。在Firestore数据库中,我保存了“ householdID”。当出现应用程序的特定页面时,将在存储库类中设置HouseholdID,以便在以后的函数调用中已经设置了该HouseholdID:

var body: some View {
  VStack {
    ...
    }}.onAppear(perform: {
        self.postListVM.postRepository.initHousehold(housholdID: self.session.session?.householdID ?? "")
    })
  }
}

当我在initHousehold(...)方法中打印局部变量时,householdID将保存到我的局部变量中。

我遇到的问题是,当我现在尝试访问postRepository类内部的局部变量HouseholdID(通过调用addVote(..)方法)时,它说该变量为空:

class PostRepository: ObservableObject {
  var householdID: String? = ""
  
  func initHousehold(hid: String) {
    householdID = hid
    print(self.householdID) //prints Optional("LR2GuZaikjxb5Xq5yGBc")
  }

  func addVote(post: Post, option: Int, counter: Int) {
      print(self.householdID) //prints Optional("")
  }

我正在另一个这样的类中调用addVote-function:

...
@Published var postRepository = PostRepository()
...
postRepository.addVote(...)
...

我在这个错误中苦苦挣扎了好几个小时,无法弄清楚问题可能出在哪里。 感谢您的任何事先帮助。

1 个答案:

答案 0 :(得分:0)

问题是,我在两个不同的位置实例化了PostRepository。我通过声明一个全局变量来解决了这个问题。