用途:为从 Realm 迁移到 SwiftData 提供完整参考路径。资料指出 Realm Device Sync 将于 2025 年 9 月 30 日停用,使用 Realm Sync 的应用需在此前完成迁移,SwiftData 为推荐替代方案。要求 Swift 5.9+(建议 Swift 6 严格并发),iOS 17+(建议 iOS 26+)。
主要能力:一是模式等价对照,包括模型定义(Realm 的 @Persisted(primaryKey:) 对应 SwiftData 的 @Attribute(.unique),注意使用 CloudKit 同步时不支持唯一约束)、关系(RealmSwiftCollection 对应原生数组,inverse 自动维护,支持 deleteRule: .cascade/.nullify/.deny)、索引(@Persisted(indexed:) 对应 @Attribute(.indexed))。二是线程模型转换,将 DispatchQueue 手动线程处理改为 actor 与 async/await,使用共享 ModelContainer 加后台 ModelContext,配合 @MainActor 标注。三是 Schema 迁移策略,简单模式可直接转换,复杂模式可引入 DTO 转换层。四是 CloudKit 同步过渡,用 ModelConfiguration 的 cloudKitDatabase 替代已弃用的 Realm Sync,并监控同步状态。
使用方式:资料给出四阶段迁移流程(准备规划、开发、迁移、生产),以及按数据规模划分的场景示例:小于 1 万条记录约 1-2 周,10 万至 100 万条约 3-4 周并采用分块迁移与进度回调,企业级超过 100 万条约 6-8 周并采用并行迁移、校验与回滚计划。
限制:迁移耗时因应用而异,资料估计生产应用需 2-8 周;CloudKit 同步下不能使用唯一约束;具体 API 行为与平台支持以官方文档为准。