SQLiteKit
一个受 SQLite-net 启发的 Swift 版本的 SQLite 库,使用 Codable 和 Mirror 技术。
特点
- 手册或 ORM
- 自动表迁移
进行中
- 当插入表中时未设置自动增加主键值
- 事务
- 在表中创建索引
- 表的自定义属性
- ...
需求
- iOS 10.0+
- Xcode 9.0+
- Swift 4.0+
安装
SQLiteKit 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中
pod 'SQLiteKit'
文档
示例
class User: SQLiteTable {
var userID: Int
var name: String
var age: Int
var avatarData: Data?
required init() {
self.name = ""
self.age = 0
self.avatarData = nil
}
// MARK: - SQLiteTable
static func sqliteAttributes: [SQLiteAttribute] {
return []
}
}
func SQLitKitDemo() {
// 1. Create your database file
let dbPath = NSHomeDirectory().appending("db.sqlite")
let db = SQLiteConnection(databasePath: dbPath)
db.create(User.self)
let user = User(name: "alexiscn", age: 20, avatarData: nil)
db.insert(user)
}
支持的类型
SQLite表支持以下原生 Swift 类型。
Swift 类型 | SQLite 类型 |
---|---|
Int |
INTEGER |
Float |
REAL |
Double |
REAL |
String |
TEXT |
Date |
REAL |
nil |
NULL |
Data |
BLOB |
Optional<T> |
T |
T 应该是以下之一:Int
、Float
、Double
、String
、Date
或 Data
。
查询
您可以使用在 SQLiteConnection
中定义的 API 来查询。
public func query<T>(_ query: String, parameters: [Any] = []) -> [T]
public func find<T>(_ pk: Any) -> T?
或者您可以创建一个您表格的查询对象。
let queryTable: SQLiteTableQuery<T> = db.table()
SQLiteTableQuery 有以下 API
public var count: Int { get }
public func toList() -> [T]
public func filter<T: SQLiteTable>(using predicate: NSPredicate) -> [T]
public func orderBy() -> SQLiteTableQuery<T>
插入
向表中插入数据相对简单。
public func insert(_ obj: SQLiteTable?) -> Int
public func insertOrReplace(_ obj: SQLiteTable?) -> Int
public func insertAll(_ objects: [SQLiteTable], inTranscation: Bool = false) -> Int
更新
public func update(_ obj: SQLiteTable) -> Int
删除
public func delete(_ obj: SQLiteTable) -> Int
public func deleteAll<T: SQLiteTable>(_ type: T.Type) -> Int
public func delete(using predicate: NSPredicate, on table: SQLiteCodable.Type) -> Int
作者
alexiscn
许可证
SQLiteKit 在 MIT 许可证下发布。有关详细信息,请参阅 LICENSE。