SuperAPI AI 工具集

axiom-swiftdata

数据与分析

查看项目

更新于 10-16 00:23

技能介绍

SwiftData 是 Apple 基于 Core Data 构建的原生持久化框架,面向 SwiftUI,核心为引用类型(class)+ @Model 宏 + 声明式 @Query 响应式集成。要求 iOS 17+、Swift 5.9+,该技能聚焦 iOS 26+ 最新特性,许可证为 Apple 专有。

适用场景:需要原生 SwiftUI 集成、简单 CRUD、@Query 自动更新 UI、CloudKit 同步或带关系的引用类型时选用;需要值类型、CloudKit 记录共享、5 万条以上大数据集特定性能需求时考虑 SQLiteData;需要复杂原生 SQL 或精细迁移控制时用 GRDB。迁移可参考 axiom-swiftdata-migration 技能,调试参考 axiom-swiftdata-migration-diag。

主要能力与用法:@Model 用 final class,@Attribute(.unique) 作主键式约束,需显式 init;关系用 @Relationship,删除规则含 .cascade、.nullify、.deny、.noAction,自引用多对多需 @MainActor(Swift 6 严格并发)。SwiftData 自动维护关系两侧,只改一侧即可,避免重复。ModelContainer 可在 App 中用 .modelContainer(for:),或自定义 ModelConfiguration(含 url、cloudKitDatabase),测试用 isStoredInMemoryOnly: true。@Query 支持 filter、sort、多排序描述符组合并自动刷新。ModelContext 提供 insert、fetch(FetchDescriptor)、delete(含批量删除)、save;用 @Environment(.modelContext) 访问,后台用 ModelContext(modelContainer)。

CloudKit 集成:ModelConfiguration 指定 .private("iCloud.com.example.app"),需在 Xcode 开启 iCloud/CloudKit 能力。关键约束:所有属性必须可选或有默认值,所有关系必须可选,否则报“Property must be optional or have a default value”;同步默认 last-write-wins,模拟器 CloudKit 不可靠,建议真机测试。

iOS 26+:@Relationship 支持 minimum/maximum,@Transient 计算属性不持久化,ModelConfiguration 支持 isHistoryEnabled。性能方面:fetchLimit 分页、relationshipKeyPathsForPrefetching 预取避免 N+1、分块导入定期保存、按需建索引。测试可用内存配置。部分细节(如价格、平台支持范围)资料未提供。