SQLiteManager 是一个用于管理 SQLite 数据库的框架。它与 Apple Framework Combine 协同工作,将数据库中的数据发布到应用程序中。例如,您可以创建您的基本 SQLite 数据库并将其放入您的 Swift 应用程序的 bundle 中。然后您可以将其复制到工作文件夹作为 SQLite 数据库,以便在其中存储或读取数据。您也可以在运行时创建 SQLite 数据库并将其保存到自定义文件夹。
下表概述了此软件包的要求
平台 | 最低 Swift 版本 | 安装 |
---|---|---|
iOS 14.0+ / macOS 10.15+ | 5.3 | Swift Package Manager |
dependencies: [
.package(url: "https://github.com/Flexible-Universe/SQLiteManager.git", .upToNextMajor(from: "1.0.0"))
]
使用 SQL 命令创建表
private var cancellables = Set<AnyCancellable>()
/* ... */
let fileManager = FileManager.default
let tempDirectoryURL = URL(fileURLWithPath: NSTemporaryDirectory())
let dbFileURL = tempDirectoryURL.appendingPathComponent("test.db")
let sqlite = try SQLiteManager(path: dbFileURL.path)
let createTableSQL = """
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
age INTEGER
);
"""
sqlite.query(sql: createTableSQL).sink(receiveCompletion: { _ in }, receiveValue: { _ in })
.store(in: &cancellables)
这段代码创建了一个包含 name 和 age 列的表。在此之后,您可以插入一些数据
private var cancellables = Set<AnyCancellable>()
/* ... */
var insertDataSQL = "INSERT INTO users (name, age) VALUES ('John Doe', 30);"
sqlite.query(sql: insertDataSQL).sink(receiveCompletion: { _ in }, receiveValue: { _ in })
.store(in: &cancellables)
insertDataSQL = "INSERT INTO users (name, age) VALUES ('Jane Smith', 27);"
sqlite.query(sql: insertDataSQL).sink(receiveCompletion: { _ in }, receiveValue: { _ in })
.store(in: &cancellables)
或者使用 SQL-SELECT 命令从表中获取一些数据
private var cancellables = Set<AnyCancellable>()
/* ... */
let sql = "SELECT * FROM users WHERE age > ?"
let parameters: [Any] = [25]
sqlite.query(sql: sql, parameters: parameters)
.sink(receiveCompletion: { completion in
switch completion {
case .finished:
print("The sql command finished successfully...")
case .failure(let error):
print("The sql command failed with error: \(error)")
}
}, receiveValue: { rows in
print("The count of rows is: \(rows.count)")
print("The name is : \(rows[0]["name"] as? String)")
print("The age is : \(rows[0]["age"] as? Int)")
})
.store(in: &cancellables)
可通过此链接访问全面的文档。
SQLiteManager 在 MIT 许可证下发布。有关详细信息,请参见 LICENSE。