[快速学会Swift第三方库] SQLite.swift篇

[快速学会Swift第三方库] SQLite.swift篇

SQLite.swift 是一个使用纯 Swift 语言封装 SQLite3 的操作框架。

特性:

简单的查询和参数绑定接口
安全、自动类型数据访问
隐式提交和回滚接口
开发者友好的错误处理和调试
文档完善
通过广泛测试

目录

  • 快速学会Swift第三方库 SQLiteswift篇
    • 目录
    • 编码之前
      • 导入SQLiteswift
      • 其他操作
    • 链接数据库
    • 创建表
    • 插入数据
    • 查询数据
    • 修改数据
    • 删除数据
    • 深入学习

编码之前

导入SQLite.swift

推荐使用CocoaPods进行导入,CocoaPods是一个负责管理iOS项目中第三方开源库的工具,安装CocoaPods之后使用命令行就能轻松地对所有第三方开源库进行安装和更新,而不需要每次上GitHub去下载。
CocoaPods的安装过程传送门:iOS 9 导入类库全面详尽过程(Ruby安装->CocoaPods安装->导入类库)
手动下载:GitHub-SQLite.swift主页

装好CocoaPods后,修改Podfile文件内容为如下:

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '9.0'
use_frameworks!
pod 'SQLite.swift', '~> 0.10.1'
end
xcodeproj 'Desktop/Web/Web.xcodeproj'

target后面为工程名,最后一行为工程路径(这里的Web是我的工程名)

再执行命令:

$ pod install

其他操作

在Target->工程名->Build Settings->Search Paths->User Header Search Paths处添加SQLite.swift所在的目录:

选择Target->工程名->Build Phases,在Link Binary With Libraries中添加 libsqlite3.tbd
在工程的bridging header中加入以下代码:

#import <sqlite3.h>

最后在你需要用到SQLite.swift的类中加上:

import SQLite

链接数据库

let path = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0]
let db = try? Connection("\(path)/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(ifNotExists: true, block: { (table) in
            table.column(id, primaryKey: true)
            table.column(name)
            table.column(email, unique: true)
        }))

等价于执行SQL语句:

CREATE TABLE IF NOT EXISTS "users" (
     "id" INTEGER PRIMARY KEY NOT NULL,
     "name" TEXT,
     "email" TEXT NOT NULL UNIQUE
)

插入数据

let insert = users.insert(name <- "究极死胖兽", email <- "scuxiatian@foxmail.com")
let rowid = (try! db?.run(insert))!
let insert2 = users.insert(name <- "Amazing7", email <- "360898864@qq.com")
let rowid2 = (try! db?.run(insert2))!

等价于执行SQL语句:

insert into users (name,email) values('究极死胖兽','scuxiatian@foxmail.com')
insert into users (name,email) values('Amazing7','360898864@qq.com')

查询数据

for user in (try! db?.prepare(users))! {
            print("Query:id: \(user[id]), name: \(user[name]), email: \(user[email])")
        }

等价于执行SQL语句:

SELECT * FROM users

执行结果:

Query:id: 1, name: Optional("究极死胖兽"), email: scuxiatian@foxmail.com
Query:id: 2, name: Optional("Amazing7"), email: 360898864@qq.com

条件查询会在后面用到

修改数据

let update = users.filter(id == rowid)
try! db?.run(update.update(email <- email.replace("foxmail", with: "qq")))

for user in (try! db?.prepare(users.filter(name == "究极死胖兽")))! {
    print("Update:id: \(user[id]), name: \(user[name]), email: \(user[email])")
}

等价于执行SQL语句:

update users set email=replace(email,'foxmail','qq') where id == 1
SELECT * FROM users where name='究极死胖兽'

执行结果:

Update:id: 1, name: Optional("究极死胖兽"), email: scuxiatian@qq.com

删除数据

try! db?.run(users.filter(id == rowid2).delete())
for user in (try! db?.prepare(users))! {
    print("Delete:id: \(user[id]), name: \(user[name]), email: \(user[email])")
}

等价于执行SQL语句:

delete from users where id = 2
SELECT * FROM users

执行结果(只剩下第一条记录):

Delete:id: 1, name: Optional("究极死胖兽"), email: scuxiatian@foxmail.com

深入学习

这里只列出了数据库的创建和最基本的增删改查操作,如果你希望能够更加深入地学习SQLite.swift,可以前往GitHub-SQLite.swift主页

时间: 2025-01-29 20:17:59

[快速学会Swift第三方库] SQLite.swift篇的相关文章

[快速学会Swift第三方库] Eureka篇

[快速学会Swift第三方库] Eureka篇 Eureka可以帮你简单优雅的实现动态table-view表单.它由rows,sections和forms组成.如果你的app包含大量表单,Eureka可以真正帮你节省时间. 目录 快速学会Swift第三方库 Eureka篇 目录 编码之前 导入 Eureka 其他操作 创建表单 基础表单 选择类型表单 Segment风格选择器 标准选择器 pickerView风格选择器 三种风格选择器效果对比 带输入框的表单 自定义Row 深入学习 编码之前 导

[快速学会Swift第三方库] HanekeSwift篇

[快速学会Swift第三方库] HanekeSwift篇 Haneke是一个轻量级的缓存,为UIImage,JSON,NSData,String提供记忆和LRU磁盘缓存. 目录 快速学会Swift第三方库 HanekeSwift篇 目录 编码之前 导入HanekeSwift 其他操作 使用缓存 NSData 示例代码 运行结果 JSON 测试接口 示例代码 运行结果 UIImage和String UIImage的拓展用法 示例代码 运行结果 fetcher的其他用法 深入学习 编码之前 编码之前

[快速学会Swift第三方库] SwiftyJSON篇

[快速学会Swift第三方库] SwiftyJSON篇 SwiftyJSON使得用Swift处理JSON数据更加容易.这是解析JSON字符串封装类.实现功能与Javascript中的JSON.parse相近,使用方便. 目录 快速学会Swift第三方库 SwiftyJSON篇 目录 编码之前 导入SwiftyJSON 其他操作 解析本地JSON 示例JSON 示例代码 运行结果 解析网络JSON 示例JSON 示例代码 运行结果 深入学习 编码之前 导入SwiftyJSON 推荐使用CocoaP

[快速学会Swift第三方库] Alamofire篇

[快速学会Swift第三方库] Alamofire篇 Alamofire是 Swift 语言的 HTTP 网络开发工具包,AFNetworking的 Swift 版,使用起来相当简单. 目录 快速学会Swift第三方库 Alamofire篇 目录 编码之前 导入Alamofire 其他操作 Web请求 示例代码 运行结果 数据请求JSON 示例代码 运行结果 上传文件 示例代码 运行结果 下载文件 示例代码 运行结果 深入学习 编码之前 导入Alamofire 推荐使用CocoaPods进行导入

[快速学会Swift第三方库] Kingfisher篇

[快速学会Swift第三方库] Kingfisher篇 Kingfisher是一个轻量的下载和缓存网络图片库.下载和缓存是异步进行操作,已经下载好的图片会缓存在内存和本地,极大得提高app的体验. 目录 快速学会Swift第三方库 Kingfisher篇 目录 编码之前 导入 Kingfisher 其他操作 基础操作 使用optionsInfo参数 回调函数 取消任务 下载器 缓存系统 预取 动态图片 深入学习 编码之前 导入 Kingfisher 推荐使用CocoaPods进行导入,Cocoa

[快速学会Swift第三方库] Cartography篇

[快速学会Swift第三方库] Cartography篇 Cartography 是用来声明 Swift 中的 Auto Layout,无需输入任何 stringly 就可设置自己 Auto Layout 的约束声明. 目录 快速学会Swift第三方库 Cartography篇 目录 编码之前 导入 Cartography 其他操作 基本约束 示例代码 运行结果 替换约束 示例代码 运行结果 复合约束与对齐 示例代码 运行结果 边距 示例代码 运行结果 深入学习 编码之前 导入 Cartogra

[快速学会Swift第三方库]AlamofireObjectMapper

[快速学会Swift第三方库]AlamofireObjectMapper篇 通常网络请求返回的是JSON数据,使用ObjectMapper可以让JSON数据直接转化为对象,而使用Alamofire进行网络请求时,使用AlamofireObjectMapper可以直接返回对象,更加简洁. Alamofire的使用:[快速学会Swift第三方库] Alamofire篇 ObjectMapper在非Alamofire请求下的使用:GitHub-ObjectMapper主页 目录 快速学会Swift第三

Swift 使用Carthage来安装管理第三方库

之前我介绍了如何使用 CocoaPods 来管理第三方库(Swift - CocoaPods的安装使用详解),本文介绍另一个第三方库管理工具:Carthage. 1,Carthage介绍 相较于 CocoaPods 的悠久历史,Carthage 还比较年轻,出现也没几年(自 Swift 语言出来后才有的).它的目标是用最简单的方式来将第三方框架(frameworks)添加到我们项目中来. GitHub 主页地址:https://github.com/Carthage/Carthage.git 2

swift常用的第三方库列表

https://github.com/Alamofire/Alamofire 网络请求库 https://github.com/SwiftyJSON/SwiftyJSON 更易用的json https://github.com/danielgindi/ios-charts 图形图表库 https://github.com/MengTo/Spring 封装了一些动画的库 https://github.com/Ramotion/animated-tab-bar tabbar实现动画 https://