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

SwiftData更新ModelContainer后出现偶发崩溃及CoreData校验和警告的问题求助

SwiftData更新ModelContainer后出现偶发崩溃及CoreData校验和警告的问题求助

各位好,我在SwiftData的版本化Schema和ModelContainer配置上遇到了问题,想请大家帮忙看看:

首先说下我的基础情况:我在App里有这些SwiftData模型:[SDPlanBrief.self, SDAirport.self, SDChart.self, SDIndividualRunwayAirport.self, SDLocationBrief.self],其中SDLocationBrief和SDChart之间存在@Relationship关联。

版本化Schema的配置演变

最开始上线App时我没有做版本化Schema,后来因为需要给@Model模型新增字段,不得不切换到版本化Schema方案。

  • 最初的第一个版本化Schema我只加了修改过的模型:
static var models: [any PersistentModel.Type] { [SDPlanBrief.self] }

这时候我的ModelContainer还是用全量模型列表初始化,一直工作正常:

.modelContainer(for: [SDAirport.self, SDIndividualRunwayAirport.self, SDLocationBrief.self, SDChart.self, SDPlanBrief.self])

后来我了解到版本化Schema应该包含所有@Model模型,于是把版本化Schema的models改成了全量:

static var models: [any PersistentModel.Type] { [SDPlanBrief.self, SDAirport.self, SDChart.self, SDIndividualRunwayAirport.self, SDLocationBrief.self] }

ModelContainer的修改

同时我也调整了ModelContainer的创建方式,适配版本化Schema的使用,改成用actor来管理容器初始化:

actor ModelContainerActor {
    @MainActor static func container() -> ModelContainer {
        let schema = Schema( versionedSchema: AllSwiftDataSchemaV3.self )
        let configuration = ModelConfiguration()
        let container = try! ModelContainer(
            for: schema,
            migrationPlan: PlanBriefMigrationPlan.self,
            configurations: configuration
        )
        return container
    }
}

然后在App入口这样传入容器:

.modelContainer(ModelContainerActor.container())

当前遇到的问题

现在每次运行App,都会连续多次弹出这条CoreData错误日志:

CoreData: error: Attempting to retrieve an NSManagedObjectModel version checksum while the model is still editable. This may result in an unstable verison checksum. Add model to NSPersistentStoreCoordinator and try again.

更严重的是,TestFlight上的用户会出现偶发崩溃,尤其是在视图快速加载的场景(比如关闭订阅视图,可能数据还未完全加载完成时),我猜测这和@Query的访问逻辑有关。

我本身对SwiftData的掌握还比较浅,实在摸不清问题根源,希望有经验的朋友能帮我分析下原因,或者给点解决方向?


内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.07 12:28:04