簡體   English   中英

在另一個 SwiftUI 中使用一個 EnvironmentObject

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM