[英]Using one EnvironmentObject in another SwiftUI
我試圖在我的程序中使用兩個不同的環境變量。 其中之一“UserInfo”保存了當前已驗證用戶的所有用戶信息。 代碼如下所示。
public class UserInfo: ObservableObject {
some stuff here....
}
接下來是會話管理器,它為用戶管理鍛煉會話。 但是,在這一個中,我希望能夠使用上面顯示的 userInfo 環境變量中的用戶數據。
class SessionManager: ObservableObject {
@EnvironmentObject var userInfo: UserInfo
some other stuff here.....
}
這是傳入環境變量的地方。
@main
struct MyApp: App {
@StateObject var sessionManager = SessionManager()
@StateObject var userInfo = UserInfo()
init() {
FirebaseApp.configure()
}
var body: some Scene {
WindowGroup {
ContentView()
.environmentObject(userInfo)
.environmentObject(sessionManager)
}
}
}
我在運行時得到的錯誤是“致命錯誤:未找到 UserInfo 類型的 ObservableObject。UserInfo 的 View.environmentObject(_:) 作為此視圖的祖先可能丟失。” 這來自 SessionManager。
如何在 SessionManager 類中使用來自 userInfo 的信息?
通常只有一個包含用戶和會話結構的環境對象。
我認為你試圖以錯誤的方式做到這一點,
據我所知,我們只能將 EnvironmentObject 從一個 SwiftUI 視圖傳遞到另一個 SwiftUI 視圖,在這里您試圖將 EnvironmentObject 值傳遞給ContentView
並且您的用例是需要SessionManager
中的UserInfo
,我認為我們可以在EnvironmentObject
的幫助下做不到。
您可以在 SessionManager 的初始化程序中傳遞 UserInfo,然后您就可以在那里使用它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.