我正在使用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(...)
...
我在这个错误中苦苦挣扎了好几个小时,无法弄清楚问题可能出在哪里。 感谢您的任何事先帮助。
答案 0 :(得分:0)
问题是,我在两个不同的位置实例化了PostRepository。我通过声明一个全局变量来解决了这个问题。