AWSQLiteDB a simple wrapper for libsqlite3.0 in Swift
Carthage
是一个去中心化的包管理工具。
安装 Carthage
$ brew update
$ brew install carthage
集成 AWSQLiteDB 到 iOS 项目
-
在项目中创建
Cartfile
文件,并添加下面内容git "https://github.com/adow/AWSQLiteDB.git" >= 0.1.2
-
运行
Carthage update
, 获取 AWSQLiteDB; -
拖动
Carthage/Build/iOS
下面的AWSQLiteDB.framwork
到项目Targets
,General
设置标签的Linked Frameworks and Linraries
中; -
在
Targes
的Build Phases
设置中,点击+
按钮,添加New Run Script Phase
来添加脚本:/usr/local/bin/carthage copy-frameworks
同时在下面的
Input Files
中添加:$(SRCROOT)/Carthage/Build/iOS/AWSQLiteDB.framework
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
use_frameworks!
pod 'AWSQLiteDB', '~> 0.1.2'
通过 Submodule 将 SecrecySwift 作为 Embedded Framework 添加到项目中。
-
首先确保项目已经在 git 仓库中;
-
添加
AWSQLiteDB
作为 Submodule:git submodule add https://github.com/adow/AWSQLiteDB.git
-
在 Xcode 中打开项目,将 AWSQLiteDB.xcodeproj 拖放到你的项目的根目录下;
-
在你的项目下,选择
Targets
,General
中添加Embedded Binaries
, 选择AWSQLiteDB.framework
, 确保Build Phases
中的Link Binary with Libraries
中有AWSQLiteDB.framework
;
- 复制 AWSQLiteDB.swift 到项目中
- 在项目的
Targets
的Build Phases
的Link Binary with Libraries
中添加libsqlite3.0.tbd
;
let cache_dir = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.CachesDirectory, NSSearchPathDomainMask.UserDomainMask, true)[0]
let db_filename = "\(cache_dir)/sql.db"
let db = SQLiteDB(path: db_filename)
SQLiteDB 实例被释放的时候会自动关闭数据库
db.close()
let cache_dir = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.CachesDirectory, NSSearchPathDomainMask.UserDomainMask, true)[0]
let db_filename = "\(cache_dir)/sql.db"
guard let _ = try? SQLiteDB.setupSharedDBPath(db_filename) else {
return
}
创建表
var sql = "create table test (id INTEGER PRIMARY KEY AUTOINCREMENT, name CHAR(32) NOT NULL)"
print("create table:\(SQLiteDB.sharedDB.execute(sql))")
Insert
sql = "insert into test (id,name) values (?,?)"
var result = SQLiteDB.sharedDB.execute(sql, parameters:9, "adow")
print("insert:\(result)")
update
sql = "update test set name=? where id =?"
result = SQLiteDB.sharedDB.execute(sql, parameters: "reynold qin",9)
print("update:\(result)")
sql = "select * from test"
let rows = SQLiteDB.sharedDB.query(sql)
for r in rows {
let id = r["id"]!.value!.integer!
let name = r["name"]!.value!.string!
print("\(id):\(name)")
}