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

使用@Bindable时SwiftUI Canvas预览无日志崩溃问题

问题原因分析

崩溃的直接原因是强制解包nil值,具体逻辑链如下:

  • 在预览代码里,你直接创建了Item(name:"Preview item")实例,但这个实例并没有被添加到你创建的ModelContainer对应的上下文(ModelContext)中,也就是说这个Item的ID在容器的数据库中是不存在的。
  • 进入EditItemView的初始化方法后,调用editModelContext.model(for: item.id)尝试通过ID查找模型实例,因为找不到对应的数据,会返回nil。
  • 你紧接着用as! Item进行强制解包,这会直接触发运行时崩溃,而SwiftUI预览环境有时不会输出详细崩溃日志,表现为直接无响应崩溃。

另外补充一个逻辑问题:你在初始化方法里新建了一个ModelContext,但即使原Item被正确添加到传入的ModelContainer中,新上下文也无法直接通过ID获取到原上下文里的实例(除非是持久化到磁盘的已保存数据),这也是导致查找失败的潜在因素。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 22:07:13