You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 00:55:54