SQLiteKit 0.0.16

SQLiteKit 0.0.16

alexiscn 维护。



SQLiteKit 0.0.16

  • 作者
  • xushuifeng

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 应该是以下之一:IntFloatDoubleStringDateData

查询

您可以使用在 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