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

SwiftUI预览调用SwiftData相关方法时崩溃,如何修复?

修复SwiftUI预览中SwiftData操作崩溃的问题

问题原因

SwiftUI预览环境默认未初始化SwiftData的ModelContext,点击按钮执行modelContext.insert(dm)时,上下文对象无效,触发断言失败导致崩溃——这就是日志中_assertionFailure的根源。而真机和模拟器在App启动阶段已正确配置ModelContainer,因此能正常运行。

解决方案

给预览视图手动配置SwiftData的ModelContainer和ModelContext,确保预览环境拥有合法的数据上下文:

  1. 创建仅用于预览的内存型ModelContainer(避免污染真实数据)
  2. 将ModelContext注入到视图的环境中

示例代码如下:

struct CalculatorView_Previews: PreviewProvider {
    static var previews: some View {
        // 创建内存容器,预览数据仅临时存储
        let container = try! ModelContainer(for: DrinkModel.self, configurations: ModelConfiguration(isStoredInMemoryOnly: true))
        
        CalculatorView()
            .environment(\.modelContext, container.mainContext)
    }
}

额外说明

  • isStoredInMemoryOnly: true让预览数据仅存在于内存,关闭预览后自动清除,不会影响App真实数据
  • 若你的视图通过@Environment(\.modelContext)获取上下文,注入后预览行为将与真机/模拟器完全一致
  • 若问题仍存在,可尝试清理Xcode缓存(Command+Shift+K),重启Xcode后重新生成预览

内容的提问来源于stack exchange,提问作者TestinginProd

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 22:53:24