SundeedQLite 3.0.0

SundeedQLite 3.0.0

Nour Sandid 维护。



  • 刘悦珊编写

Sundeed

SundeedQLite

Build Status codecov.io CocoaPods Compatible Platform License Language Last Commit HitCount

SundeedQLite 是使用 Swift 语言构建的最简单的离线数据库集成

需求

  • iOS 12.0+
  • XCode 10.3+
  • Swift 5+

安装


通过 CocoaPods 安装

SuddeedQLite 可通过 CocoaPods 获取。CocoaPods 是一个依赖于管理器,可以自动化并简化在项目中使用类似 MarkdownKit 的第三方库的过程。您可以使用以下命令安装 CocoaPods

gem install cocoapods

要使用 CocoaPods 将 SundeedQLite 集成到您的 Xcode 项目中,只需将以下行添加到您的 Podfile

pod "SundeedQLite"

之后,运行以下命令

pod install

符号

  • +:用于在数据库中标记主键。
  • <<:用于标记 ASCENDING 排序方法
  • >>:用于标记 DESCENDING 排序方法
  • <~>:用于将数据库返回的对象映射到特定属性
  • <*>:用于声明如果此属性从数据库返回 nil,则整个父对象将丢弃。
  • <**>:用于声明如果此数组为空,或其中一个元素是必需的(<*>),则整个父对象将删除

注意

  • 主键应该是字符串。
  • 要创建嵌套对象(例如:Employee),Employer 和 Employee 都应该有主键。

支持的类型

  • SundeedQLite 对象
  • 字符串
  • 整数
  • 双精度浮点数
  • 浮点数
  • 布尔值
  • 日期
  • UIImage
  • 数组
  • 枚举/结构体(请参阅以下文档)

备注

  • 嵌套对象将被正常保存
  • 上述类型的可选和非可选值也将被保存
  • 对象数组和原始数据类型的数组将被保存
  • 在检索时,不得将数据库返回的nil值添加到数组中

监听器

要监听事件,您可以添加任何带有要执行代码块的监听器,当事件发生时执行。

支持的事件

  • 保存
  • 更新
  • 检索
  • 删除
  • 所有事件

注意:请始终记得保存此监听器的实例,以便在不再需要时可以停止它。

文档

import SundeedQLite

class Employer: SundeedQLiter {
    var id: String!
    var fullName: String?
    var employees: [Employee]?

    required init() {}
        func sundeedQLiterMapping(map: SundeedQLiteMap) {
            id <~> map["id"]+
            fullName <~> map["fullName"]<<
            employees <~> map["employees"]
        }
    }
class Employee: SundeedQLiter {
    var id: String!
    var firstName: String?
    required init() {}
    func sundeedQLiterMapping(map: SundeedQLiteMap) {
        id <~> map["id"]
        firstName <~> map["firstName"]
    }
}
import UIKit

class ViewController: UIViewController {
    var employerSaveListener: Listener?
    override func viewDidLoad() {
        super.viewDidLoad()
        let employee = Employee()
        employee.firstName = "Nour"

        let employer = Employer()
        employer.id = "ABCD-1234-EFGH-5678"
        employer.fullName = "Nour Sandid"
        employer.employees = [employee]
        employerSaveListener = employer.onSaveEvents({ (object) in 
            print(object.id)
        })
        employer.save()
    }
    
    deinit {
        employerSaveListener.stop()
    }
}

自定义类型

要保存自定义类型(如枚举或结构体)的变量,您可以使用SundeedQLiteConverter。

class TypeConverter: SundeedQLiteConverter {
    func fromString(value: String) -> Any? {
       return Type(rawValue: value)
    }
    func toString(value: Any?) -> String? {
        return (value as? Type)?.rawValue
    }
}

enum Type: String {
    case manager
    case ceo
}

class Employer: SundeedQLiter {
    var type: Type?
    
    func sundeedQLiterMapping(map: SundeedQLiteMap) {
        type <~> (map["type"], TypeConverter())
    }
}

速查表

保存

employer.save()

检索

Employer.retrieve { (employers) in
    for employer in employers {
        print(employer.fullName)
    }
}

Employer.retrieve(withFilter: SundeedColumn("fullName") == "Nour Sandid",
                  orderBy: SundeedColumn("fullName"),
                  ascending: true) { (employers) in
    for employer in employers {
        print(employer.fullName)
    }
}

数据库重置

SundeedQLite.deleteDatabase()

SQLite3

许可

MIT