如何解决线程 1:致命错误:找不到 SessionStore 类型的 ObservableObject
我收到以下错误消息:线程 1:致命错误:未找到类型为 SessionStore 的 ObservableObject。 SessionStore 的 View.environmentObject(_:) 可能缺少作为此视图的祖先。
致命错误:未找到类型为 SessionStore 的 ObservableObject。 SessionStore 的 View.environmentObject(_:) 作为此视图的祖先可能会丢失。:文件 SwiftUI,第 0 行
但我已经将 environmentObject(SessionStore()) 添加到预览中。所以我不明白为什么会这样。
这是我的 ContentView 文件:
import SwiftUI
import Firebase
import LinkKit
struct ContentView: View {
func getUser() {
session.listen()
}
@State private var showingSheet = true
@EnvironmentObject var session: SessionStore
@StateObject private var manager = FirebaseManager()
var body: some View {
Group {
if (session.session != nil && manager.profilePicExists == true) {
HostingTabView()
} else if (session.session != nil && manager.profilePicExists == false){
HostingTabView().sheet(isPresented: $showingSheet) {
RegistrationProfileDataView()
}
} else {
AuthView()
}
}.onAppear(perform: getUser)
.onAppear(perform: manager.checkForProfileImage)
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView().environmentObject(SessionStore())
}
}
import SwiftUI
import Firebase
import Combine
class SessionStore: ObservableObject {
var didChange = PassthroughSubject<SessionStore,Never>()
@Published var session: User? {didSet {self.didChange.send(self) }}
var handle: AuthStateDidchangelistenerHandle?
func listen() {
handle = Auth.auth().addStateDidchangelistener({ (auth,user) in
if let user = user {
self.session = User(uid: user.uid,email: user.email)
} else {
self.session = nil
}
})
}
func signUp(email: String,password: String,handler: @escaping AuthDataResultCallback) {
Auth.auth().createuser(withEmail: email,password: password,completion: handler)
}
func signIn(email: String,handler: @escaping AuthDataResultCallback) {
Auth.auth().signIn(withEmail: email,completion: handler)
}
func signOut() {
do {
try Auth.auth().signOut()
self.session = nil
} catch {
print("Error signing out")
}
}
func unbind() {
if let handle = handle {
Auth.auth().removeStateDidchangelistener(handle)
}
}
deinit {
unbind()
}
}
struct User {
var uid: String
var email: String?
init(uid: String,email: String?) {
self.uid = uid
self.email = email
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。