如何在自有iOS项目中最小化集成GRDB?含SPM等集成疑问
解答:在iOS项目中通过SPM构建GRDB并使用最小组件集
嘿,我刚好用GRDB做过项目,来一步步帮你解决这两个问题~
一、通过Swift Package Manager配置GRDB到你的iOS项目
完全理解刚接触SPM时的困惑,其实步骤很清晰,跟着来就行:
- 打开你的Xcode项目,点击左侧导航栏最顶部的项目文件(不是具体的Target),切换到「Package Dependencies」标签页。
- 点击左下角的「+」按钮,在弹出的搜索框里输入
GRDB.swift,按回车搜索(或者直接用GRDB的仓库地址搜索也可以)。 - 在搜索结果里选中GRDB.swift,选择合适的版本(建议选最新的稳定版,比如「Up to Next Major Version」),点击「Add Package」。
- 接下来选择要添加到的Target(你的iOS App Target),后续我们再调整模块来用最小集。
- 最后验证配置:打开任意Swift文件,顶部添加对应模块的import语句(比如
import GRDB.Core),写个简单的数据库连接代码,编译不报错就说明配置成功了。
二、使用GRDB的最小组件集
GRDB通过SPM拆分了多个子模块,默认的GRDB包包含所有功能,但如果只需要核心数据库操作,只引入GRDB.Core就够了——这就是最精简的组件集,包含连接管理、SQL执行、事务、Row处理等基础能力。
如何只引入GRDB.Core:
- 如果还没添加GRDB包:在「Add Package」步骤中,不要勾选默认的
GRDB,而是展开列表,只勾选GRDB.Core,再添加到你的Target。 - 如果已经添加了完整的GRDB包:回到「Package Dependencies」标签页,找到GRDB.swift并展开,点击「Dependencies」里的
GRDB,修改勾选的模块,只保留GRDB.Core,然后同步项目。
最小组件集的使用示例
用GRDB.Core做基础数据库操作的代码大概是这样的:
import GRDB.Core // 创建磁盘数据库(路径在App的Documents目录下) let dbPath = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!.appendingPathComponent("myDatabase.sqlite") let dbQueue = try DatabaseQueue(path: dbPath.path) // 创建表 try dbQueue.write { db in try db.execute(sql: """ CREATE TABLE IF NOT EXISTS player ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, score INTEGER DEFAULT 0 ) """) } // 插入数据 try dbQueue.write { db in try db.execute(sql: "INSERT INTO player (name, score) VALUES (?, ?)", arguments: ["Bob", 150]) } // 查询数据 let topPlayers = try dbQueue.read { db -> [String] in let rows = try Row.fetchAll(db, sql: "SELECT name FROM player WHERE score > ? ORDER BY score DESC", arguments: [100]) return rows.compactMap { $0["name"] } } print("Top players: \(topPlayers)")
如果之后需要ORM、查询构建器等进阶功能,再回头添加GRDB.QueryInterface模块就行,完全按需扩展~
内容的提问来源于stack exchange,提问作者Dale
相关产品推荐
相关产品推荐

