一个类型安全、基于 Swift 语言的 SQLite3 封装层。
SQLite.swift 提供对 SQL 语句语法和意图的编译时信心。
import SQLite
// Wrap everything in a do...catch to handle errors
do {
let db = try Connection("path/to/db.sqlite3")
let users = Table("users")
let id = Expression<Int64>("id")
let name = Expression<String?>("name")
let email = Expression<String>("email")
try db.run(users.create { t in
t.column(id, primaryKey: true)
t.column(name)
t.column(email, unique: true)
})
// CREATE TABLE "users" (
// "id" INTEGER PRIMARY KEY NOT NULL,
// "name" TEXT,
// "email" TEXT NOT NULL UNIQUE
// )
let insert = users.insert(name <- "Alice", email <- "alice@mac.com")
let rowid = try db.run(insert)
// INSERT INTO "users" ("name", "email") VALUES ('Alice', 'alice@mac.com')
for user in try db.prepare(users) {
print("id: \(user[id]), name: \(user[name]), email: \(user[email])")
// id: 1, name: Optional("Alice"), email: alice@mac.com
}
// SELECT * FROM "users"
let alice = users.filter(id == rowid)
try db.run(alice.update(email <- email.replace("mac.com", with: "me.com")))
// UPDATE "users" SET "email" = replace("email", 'mac.com', 'me.com')
// WHERE ("id" = 1)
try db.run(alice.delete())
// DELETE FROM "users" WHERE ("id" = 1)
try db.scalar(users.count) // 0
// SELECT count(*) FROM "users"
} catch {
print (error)
}
SQLite.swift 也可作为 C API 的轻量级、Swift 友好的封装。
// Wrap everything in a do...catch to handle errors
do {
// ...
let stmt = try db.prepare("INSERT INTO users (email) VALUES (?)")
for email in ["betty@icloud.com", "cathy@icloud.com"] {
try stmt.run(email)
}
db.totalChanges // 3
db.changes // 1
db.lastInsertRowid // 3
for row in try db.prepare("SELECT id, email FROM users") {
print("id: \(row[0]), email: \(row[1])")
// id: Optional(2), email: Optional("betty@icloud.com")
// id: Optional(3), email: Optional("cathy@icloud.com")
}
try db.scalar("SELECT count(*) FROM users") // 2
} catch {
print (error)
}
阅读文档 或从 Xcode 项目的 playground 中以交互方式探索更多。
Swift Package Manager 是一个用于管理 Swift 代码分发的工具。
Package.swift
文件中dependencies: [
.package(url: "https://github.com/stephencelis/SQLite.swift.git", from: "0.15.3")
]
$ swift build
查看 Tests/SPM 文件夹,其中包含一个使用 SPM 的小型演示项目。
Carthage 是一个简单、去中心化的 Cocoa 依赖管理器。要使用 Carthage 安装 SQLite.swift
确保 Carthage 已安装。
更新您的 Cartfile 以包含以下内容
github "stephencelis/SQLite.swift" ~> 0.15.3
运行 carthage update
并添加相应的 framework。
CocoaPods 是 Cocoa 项目的依赖管理器。要使用 CocoaPods 安装 SQLite.swift
确保 CocoaPods 已安装。
# Using the default Ruby install will require you to use sudo when
# installing and updating gems.
[sudo] gem install cocoapods
更新您的 Podfile 以包含以下内容
use_frameworks!
target 'YourAppTargetName' do
pod 'SQLite.swift', '~> 0.14.0'
end
运行 pod install --repo-update
。
要将 SQLite.swift 作为 Xcode 子项目安装
在您的目标的 General 选项卡中,单击 Linked Frameworks and Libraries 下的 + 按钮。
为您的平台选择合适的 SQLite.framework。
添加.
在实际设备上安装应用程序还需要一些额外的步骤
在 General 选项卡中,单击 Embedded Binaries 下的 + 按钮。
为您的平台选择合适的 SQLite.framework。
添加.
查看规划文档 以了解路线图和现有功能请求。
阅读贡献指南。TL;DR(但请;阅读)
sqlite.swift
)。SQLite.swift 在 MIT 许可证下可用。有关更多信息,请参阅 LICENSE 文件。
这些项目增强或使用了 SQLite.swift
正在寻找其他方案?尝试另一个 Swift 封装库(或 FMDB)