[快速學(xué)會(huì)Swift第三方庫] SQLite.swift篇

SQLite.swift 是一個(gè)使用純 Swift 語言封裝 SQLite3 的操作框架。

特性:

1?簡單的查詢和參數(shù)綁定接口
2?安全爪幻、自動(dòng)類型數(shù)據(jù)訪問
3?隱式提交和回滾接口
4?開發(fā)者友好的錯(cuò)誤處理和調(diào)試
5?文檔完善
6?通過廣泛測試

目錄

  • [快速學(xué)會(huì)Swift第三方庫 SQLiteswift篇]
    • [目錄]
    • [編碼之前]
      • [導(dǎo)入SQLiteswift]
      • [其他操作]
    • [鏈接數(shù)據(jù)庫]
    • [創(chuàng)建表]
    • [插入數(shù)據(jù)]
    • [查詢數(shù)據(jù)]
    • [修改數(shù)據(jù)]
    • [刪除數(shù)據(jù)]
    • [深入學(xué)習(xí)]

編碼之前

導(dǎo)入SQLite.swift

推薦使用CocoaPods進(jìn)行導(dǎo)入菱皆,CocoaPods是一個(gè)負(fù)責(zé)管理iOS項(xiàng)目中第三方開源庫的工具须误,安裝CocoaPods之后使用命令行就能輕松地對(duì)所有第三方開源庫進(jìn)行安裝和更新,而不需要每次上GitHub去下載仇轻。
CocoaPods的安裝過程傳送門:iOS 9 導(dǎo)入類庫全面詳盡過程(Ruby安裝->CocoaPods安裝->導(dǎo)入類庫)
手動(dòng)下載:GitHub-SQLite.swift主頁

裝好CocoaPods后京痢,修改Podfile文件內(nèi)容為如下:

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是我的工程名)

再執(zhí)行命令:

pod install

其他操作

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


20160523181244677.png

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

#import <sqlite3.h>

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

import SQLite

鏈接數(shù)據(jù)庫

let path = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0]
let db = try? Connection("\(path)/db.sqlite3")

創(chuàng)建表

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)
        }))

等價(jià)于執(zhí)行SQL語句:

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

插入數(shù)據(jù)

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))!

等價(jià)于執(zhí)行SQL語句:

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

查詢數(shù)據(jù)

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

等價(jià)于執(zhí)行SQL語句:

SELECT * FROM users

執(zhí)行結(jié)果:

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

條件查詢會(huì)在后面用到

修改數(shù)據(jù)

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])")
}

等價(jià)于執(zhí)行SQL語句:

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

執(zhí)行結(jié)果:

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

刪除數(shù)據(jù)

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])")
}

等價(jià)于執(zhí)行SQL語句:

delete from users where id = 2
SELECT * FROM users

執(zhí)行結(jié)果(只剩下第一條記錄):

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

深入學(xué)習(xí)

這里只列出了數(shù)據(jù)庫的創(chuàng)建和最基本的增刪改查操作篷店,如果你希望能夠更加深入地學(xué)習(xí)SQLite.swift祭椰,可以前往GitHub-SQLite.swift主頁

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市疲陕,隨后出現(xiàn)的幾起案子方淤,更是在濱河造成了極大的恐慌,老刑警劉巖蹄殃,帶你破解...
    沈念sama閱讀 221,273評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件携茂,死亡現(xiàn)場離奇詭異,居然都是意外死亡诅岩,警方通過查閱死者的電腦和手機(jī)讳苦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來吩谦,“玉大人鸳谜,你說我怎么就攤上這事∈酵ⅲ” “怎么了咐扭?”我有些...
    開封第一講書人閱讀 167,709評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長滑废。 經(jīng)常有香客問我草描,道長,這世上最難降的妖魔是什么策严? 我笑而不...
    開封第一講書人閱讀 59,520評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮饿敲,結(jié)果婚禮上妻导,老公的妹妹穿的比我還像新娘。我一直安慰自己怀各,他們只是感情好倔韭,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,515評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著瓢对,像睡著了一般寿酌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上硕蛹,一...
    開封第一講書人閱讀 52,158評(píng)論 1 308
  • 那天醇疼,我揣著相機(jī)與錄音硕并,去河邊找鬼。 笑死秧荆,一個(gè)胖子當(dāng)著我的面吹牛倔毙,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播乙濒,決...
    沈念sama閱讀 40,755評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼陕赃,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了颁股?” 一聲冷哼從身側(cè)響起么库,我...
    開封第一講書人閱讀 39,660評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎甘有,沒想到半個(gè)月后诉儒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,203評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡梧疲,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,287評(píng)論 3 340
  • 正文 我和宋清朗相戀三年允睹,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片幌氮。...
    茶點(diǎn)故事閱讀 40,427評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡缭受,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出该互,到底是詐尸還是另有隱情米者,我是刑警寧澤,帶...
    沈念sama閱讀 36,122評(píng)論 5 349
  • 正文 年R本政府宣布宇智,位于F島的核電站蔓搞,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏随橘。R本人自食惡果不足惜喂分,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,801評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望机蔗。 院中可真熱鬧蒲祈,春花似錦、人聲如沸萝嘁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽牙言。三九已至酸钦,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間咱枉,已是汗流浹背卑硫。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評(píng)論 1 272
  • 我被黑心中介騙來泰國打工徒恋, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人拔恰。 一個(gè)月前我還...
    沈念sama閱讀 48,808評(píng)論 3 376
  • 正文 我出身青樓因谎,卻偏偏與公主長得像,于是被迫代替她去往敵國和親颜懊。 傳聞我的和親對(duì)象是個(gè)殘疾皇子财岔,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,440評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 1、通過CocoaPods安裝項(xiàng)目名稱項(xiàng)目信息 AFNetworking網(wǎng)絡(luò)請(qǐng)求組件 FMDB本地?cái)?shù)據(jù)庫組件 SD...
    陽明先生_X自主閱讀 15,985評(píng)論 3 119
  • 四年級(jí) / 薛博文 去年冬天的一個(gè)晚上河爹,我把頭給碰破了匠璧! 事情要從那件事說起:寫完作業(yè),我準(zhǔn)備去廁所洗一下...
    zyl林閱讀 590評(píng)論 6 13
  • 太陽很大咸这,在黑夜里夷恍。 意識(shí)逐漸清醒了,印入眼瞳的橘黃色燈光媳维,是一盞搖曳的吊燈酿雪。 我還記得買這盞燈燈時(shí)候,壓低了帽檐...
    名偵探夏蔡田閱讀 295評(píng)論 1 2