专业java、php、iOS、C++、网页设计、平面设计、网络营销、游戏开发、前端与移动开发培训机构
使用数据库缓存微博数据
使用数据库的好处:
- 在查看微博数据的时候,如果本地有保存直接获取本地的数据.不用在去服务器请求数据,节省用户流量
- 当没有网络的时候,加载本地的数据
准备工作
CocoaPods
集成FMDB
use_frameworks! pod 'FMDB'
建立单例
/*
数据库操作:
1.打开数据库
2.创建表
3.操作数据
*/
class HMSQLiteManager: NSObject {
static let shared = HMSQLiteManager()
var dbQueue: FMDatabaseQueue
override init() {
let dbPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).last!.appending("/status.db")
print("dbPath: \(dbPath)")
dbQueue = FMDatabaseQueue(path: dbPath)
super.init()
// 创建数据表
createTable()
}
private func createTable() {
// 之前的sql语句都是在代码里面在写的,通过文件来加载sql语句,在文件中可以编写多条sql语句
// 获取table.sql文件的路径
let bundlePath = Bundle.main.path(forResource: "tables", ofType: "sql")!
// 加载table.sql文件里的内容
let sql = try! String(contentsOfFile: bundlePath)
print("加载文件sql: \(sql)")
dbQueue.inDatabase { (db) -> Void in
if let db = db, db.executeStatements(sql) {
print("创建表成功")
}
}
}
}
数据表设计
statusId | stauts | userId |
---|---|---|
微博Id | 取的单条微博的 JSON 字符串 | 登录用户的Id |
微博Id | 取的单条微博的 JSON 字符串 | 登录用户的Id |
使用Navicat在本地创建一个数据库.方便测试数据库操作
准备创建数据表 SQL
- 使用新浪微博返回的
statusId
作为主键,主键不再使用自动增长 - 数据表中设置
userId
,保证同一个数据库中能够缓存多个账户的微博信息 - 建立
status
字段保存从服务器返回的完整微博JSON
字符串 - 添加
Resource
文件夹,在Resource
文件夹里添加table.sql
文件.从Navicat复制DDL
创表sql
:-- 创建T_Status数据表 CREATE TABLE "T_Status" ( "statusId" INTEGER NOT NULL, "status" TEXT, "userId" INTEGER, PRIMARY KEY("statusId") )
DDL
创建数据表sql
需要添加IF NOT EXISTS
,最后添加;
- 在
AppDelegate
的didFinishLaunching
添加:// 打开数据库 SQLiteManager.shared
- 测试
数据库
和数据表
是否创建成功