专业java、php、iOS、C++、网页设计、平面设计、网络营销、游戏开发、前端与移动开发培训机构
加载缓存微博数据
- 定义
loadCacheData
函数/** 加载缓存微博数据 parameter since_id: 下拉刷新 parameter max_id: 上拉加载更多 */ func loadCacheData(since_id: Int, max_id: Int) { }
确定
SQL
SELECT statusId, status, userId FROM T_Status WHERE userId = 5676208596 -- 查找当前用户的微博 AND statusId < 3895337640853347 --上拉或者下拉使用 ORDER BY statusId DESC --降序排序 LIMIT 20; --一次最多加载20条
在
loadCacheData
函数根据since_id
和max_id
拼接SQL
/** 加载缓存微博数据 parameter since_id: 下拉刷新 parameter max_id: 上拉加载更多 */ func loadCacheData(since_id: Int, max_id: Int) { // 获取用户的ID guard let userId = HMUserAccountViewModel.shared.userAccount?.uid else { print("无法获取用户信息") return } // 确定sql var sql = "SELECT statusId, status, userId FROM T_Status \n" + "WHERE userId=\(userId) \n" // 下拉刷新 if since_id > 0 { sql += "AND statusId > \(since_id) \n" } // 上拉加载更多 if max_id > 0 { sql += "AND statusId < \(max_id) \n" } sql += "ORDER BY statusId DESC LIMIT 20;" // 打印sql print(sql) }
- 在
loadCacheData
函数测试拼接的SQL
- 在
HMStatusListViewModel.swift
的loadStatus
函数中 测试加载本地数据// TODO: 测试加载本地数据 HMStatusDAL.shared.loadCacheData(since_id: since_id, max_id: max_id)
在
loadCacheData
完成加载缓存数据/** 加载缓存微博数据 parameter since_id: 下拉刷新 parameter max_id: 上拉加载更多 */ func loadCacheData(since_id: Int, max_id: Int, finish: @escaping ([[String: Any]]?) -> Void) { // 获取用户的ID guard let userId = HMUserAccountViewModel.shared.userAccount?.uid else { print("无法获取用户信息") return } // 确定sql var sql = "SELECT statusId, status, userId FROM T_Status \n" + "WHERE userId=\(userId) \n" // 下拉刷新 if since_id > 0 { sql += "AND statusId > \(since_id) \n" } // 上拉加载更多 if max_id > 0 { sql += "AND statusId < \(max_id) \n" } sql += "ORDER BY statusId DESC LIMIT 20;" // 打印sql print(sql) HMSQLiteManager.shared.dbQueue.inDatabase { (db) in do { let result = try db!.executeQuery(sql, values: []) // 返回微博字典数组 var array = [[String: Any]]() // 获取数据 while result.next() { // 获取微博字段数据 let statusString = result.string(forColumn: "status") // String转成字典. String -> NSData -> JSON let statusData = statusString?.data(using: .utf8) let dict = try JSONSerialization.jsonObject(with: statusData!, options: []) // 添加微博字典到微博数组 array.append(dict as! [String : Any]) } // 返回微博字典数组 finish(array) } catch { finish(nil) } } }
- 修改调用
HMStatusDAL.shared.loadCacheData(since_id: since_id, max_id: max_id) { (result) in print("result: \(result)") }