SwiftUI报错:未找到MenuListFriendshipModel的ObservableObject及视图传递疑问
解决SwiftUI中找不到ObservableObject的环境注入问题
问题核心
你遇到的Thread 1: Fatal error: No ObservableObject of type MenuListFriendshipModel found错误,本质是使用@EnvironmentObject的视图没有在祖先视图链中获取到对应的实例。你的预览代码里加了.environmentObject(),但实际App运行的视图层级中没有注入这个模型实例。
解决方案
要让FriendshipListView能拿到MenuListFriendshipModel,需要在它的任意祖先视图中注入该模型的实例,确保整个视图链都能访问到。
方案1:在App根级别注入
修改ManifestationMenuApp.swift,创建模型实例并注入到环境中:
// ManifestationMenuApp.swift import SwiftUI @main struct ManifestationMenuApp: App { @AppStorage("isOnboarding") var isOnboarding: Bool = true // 创建模型实例 private let friendshipModel = MenuListFriendshipModel() var body: some Scene { WindowGroup { if isOnboarding { OnboardingView() } else { MainView() .environmentObject(friendshipModel) // 注入到环境 } } } }
方案2:在MainView中注入
如果FriendshipListView是MainView的子视图,也可以在MainView中注入:
struct MainView: View { // 创建模型实例 private let friendshipModel = MenuListFriendshipModel() var body: some View { // 假设MainView包含导航栈或其他容器 NavigationStack { FriendshipListView() } .environmentObject(friendshipModel) } }
额外检查
确保MenuListFriendshipModel正确遵循ObservableObject协议:
class MenuListFriendshipModel: ObservableObject { @Published var items: [YourItemType] = [] // 替换成你的实际item类型 // 其他业务逻辑 }
内容的提问来源于stack exchange,提问作者Kraig Kistler
相关产品推荐
相关产品推荐

