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

简介: [快速学会Swift第三方库] SQLite.swift篇SQLite.swift 是一个使用纯 Swift 语言封装 SQLite3 的操作框架。特性:简单的查询和参数绑定接口安全、自动类型数据访问隐式提交和回滚接口开发者友好的错误处理和调试文档完善通过广泛测试目录快速学会Swift第三方库 SQLiteswift篇目录编码之

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

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

特性:

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

目录

编码之前

导入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主页

目录
相关文章
|
缓存 JSON 安全
43 Swift中的一些第三方库
Swift中的一些第三方库
207 0
|
iOS开发 Swift Perl
[快速学会Swift第三方库] Eureka篇
[快速学会Swift第三方库] Eureka篇 Eureka可以帮你简单优雅的实现动态table-view表单。它由rows,sections和forms组成。如果你的app包含大量表单,Eureka可以真正帮你节省时间。 目录 快速学会Swift第三方库 Eureka篇 目录 编码之前 导入 Eureka 其他操作 创建表单 基础表单 选择类型表
3269 0
|
SQL 存储 Oracle
swift微博第25天(SQLite)
swift微博第25天(SQLite)
220 0
swift微博第25天(SQLite)
|
存储 数据库 iOS开发
iOS - Swift SQLite 数据库存储
前言 采用 SQLite 数据库来存储数据。SQLite 作为一中小型数据库,应用 iOS 中,跟前三种保存方式相比,相对比较复杂一些。 注意:写入数据库,字符串可以采用 char 方式,而从数据库中取出 char 类型,当 char 类型有表示中文字符时,会出现乱码。
1202 0
|
缓存 iOS开发 Swift
[快速学会Swift第三方库] Kingfisher篇
[快速学会Swift第三方库] Kingfisher篇 Kingfisher是一个轻量的下载和缓存网络图片库。下载和缓存是异步进行操作,已经下载好的图片会缓存在内存和本地,极大得提高app的体验。 目录 快速学会Swift第三方库 Kingfisher篇 目录 编码之前 导入 Kingfisher 其他操作 基础操作 使用optionsInfo参数
7628 0
|
JSON 数据格式 iOS开发
[快速学会Swift第三方库]AlamofireObjectMapper
[快速学会Swift第三方库]AlamofireObjectMapper篇 通常网络请求返回的是JSON数据,使用ObjectMapper可以让JSON数据直接转化为对象,而使用Alamofire进行网络请求时,使用AlamofireObjectMapper可以直接返回对象,更加简洁。 Alamofire的使用:[快速学会Swift第三方库] Alamofire篇 Ob
3770 0
|
SQL 数据库 数据库管理
Swift学习第九枪之SQLite的使用
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010046908/article/details/51570242 前面写了一部分关于Swift的语法学习,今天要学习的是关于IOS中数据存储的一种存储方式之SQLite的使用。
872 0