用途:该技能面向需要在 Swift 中直接使用 SQLite 原始 SQL 的场景,基于 GRDB.swift 这一 SQLite 工具包,提供类型安全查询、迁移与响应式观察能力。核心原则是在需要时保留完整 SQLite 能力,同时用 Swift 类型安全包装。要求 iOS 13+、Swift 5.7+,采用 MIT 许可,免费开源。
主要能力:支持跨 4 张以上表的复杂 JOIN、窗口函数(ROW_NUMBER、RANK、LAG/LEAD)、ValueObservation 响应式查询、为性能完全掌控 SQL,以及超出模式变更的高级迁移逻辑。提供 DatabaseQueue(单连接)与 DatabasePool(连接池)两种数据库设置;记录类型可用 Codable、FetchableRecord(只读)、PersistableRecord(写入);支持原始 SQL 读写、事务、类型安全过滤排序与关联查询。
使用方式:通过 dbQueue.read / dbQueue.write 执行查询与写入,写入块自动事务化;用 DatabaseMigrator 注册迁移并调用 migrator.migrate(dbQueue);用 ValueObservation.tracking 配合 Combine publisher 或 GRDBQuery 实现 SwiftUI 响应式绑定。性能方面可用 database.trace 与 EXPLAIN QUERY PLAN 分析,按需创建索引,批量写入使用单事务与预处理语句。
适用场景:复杂 SQL 查询、自定义迁移、批量 SQL 操作、ValueObservation 设置。若类型安全 @Table 模型已足够、需要 CloudKit 同步或偏好声明式查询,可改用 SQLiteData;简单 CRUD 且无需原始 SQL 控制时可用 SwiftData。
限制:tvOS 上本地 GRDB 数据库不持久,系统会在存储压力下删除 Caches(含 Application Support),需配合 CloudKit 同步。避免主线程同步访问、N+1 查询、批量写入逐条事务以及盲目加索引。具体收费、价格与平台支持细节资料未提供。