SuperAPI AI 工具集

axiom-grdb

前端与建站

查看项目

更新于 10-16 00:22

技能介绍

用途:当需要直接写原始 SQL 访问 SQLite 时使用 GRDB.swift,它是对 SQLite 的类型安全 Swift 封装,在需要时保留完整 SQLite 能力。适用场景包括跨 4 张以上表的复杂 JOIN、窗口函数(ROW_NUMBER、RANK、LAG/LEAD)、ValueObservation 响应式查询、为性能完全掌控 SQL、以及超出模式变更的高级迁移逻辑。若类型安全的 @Table 模型已足够、需要 CloudKit 同步或偏好声明式查询,应改用 SQLiteData;简单 CRUD 且无需原始 SQL 控制时可用 SwiftData。

主要能力:DatabaseQueue(单连接,多数应用适用)与 DatabasePool(多线程高并发写入)两种数据库设置;记录类型支持 Codable、FetchableRecord(只读)与 PersistableRecord(写入);原始 SQL 读写、事务、批量写入与预处理语句(makeStatement);类型安全查询接口支持 filter、order、limit 和 joining;ValueObservation 可结合 Combine 与 GRDBQuery 做 SwiftUI 响应式绑定,支持过滤观察;DatabaseMigrator 支持注册迁移、数据转换与索引创建;性能方面可用 database.trace 与 EXPLAIN QUERY PLAN 剖析查询并策略性添加索引。

使用方式:数据库通过 DatabaseQueue(path:) 或 DatabasePool(path:) 创建,测试可用内存库;读操作走 dbQueue.read,写操作走 dbQueue.write,write 块内自动事务,成功提交、出错回滚;迁移通过 migrator.registerMigration 注册后调用 migrator.migrate(dbQueue),GRDB 保证每个迁移只运行一次且按序执行,可安全重复调用;从 SQLiteData 下沉时可通过 database.database.write 访问底层 GRDB。

限制与注意:需要 iOS 13+、Swift 5.7+,框架为 GRDB.swift 6.0+,许可为 MIT(免费开源)。tvOS 上本地 GRDB 数据库不持久,系统在存储压力下会删除 Caches(含 Application Support),若面向 tvOS 需配合 CloudKit 同步(如 CKSyncEngine 或 SQLiteData 的 SyncEngine),使 iCloud 作为持久存储、本地库作为可重建缓存。常见错误包括批量写入未使用事务、主线程同步访问、忘记加索引、N+1 查询;ValueObservation 在任意写入时会重新求值,可考虑 removeDuplicates 与 debounce。其他收费、价格与平台细节暂未提供。