我最近更新到了 Xcode 16 和 iOS 18。 我看到我的应用程序中的小部件停止工作 - 它们是空的。 我尝试启动小部件方案并收到此错误
This model instance was destroyed
与小部件内部使用的 Swiftdata 模型相关
当实例化模型容器但未使用
.modelContainer(mycontainer)
绑定到视图层次结构时,我在 SwiftUI 预览中看到了此消息。
容器不被拥有,当范围丢失且数据模型被破坏时被释放。
检查您在小部件代码中创建的模型容器的所有权。例如,这可能会体现问题。
@ViewBuilder func thing() -> some View {
let context = ModelContainer(etc).mainContext
let thing = MyThingQuery(context)
Text("Hello from \(thing.foo)")
}
模型容器在退出函数时被丢弃,并且
thing
留下无效的上下文。