专业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_idmax_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.swiftloadStatus 函数中 测试加载本地数据
    // 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)")
    }
    

results matching ""

    No results matching ""