专业java、php、iOS、C++、网页设计、平面设计、网络营销、游戏开发、前端与移动开发培训机构

保存网络数据到本地

  • 新建 saveStatus 函数,首先解决保存微博数据问题

    /**
    将网络获取的微博数据保存到本地
    parameter array: 网络返回的微博数据数组
    */
    func saveStatus(array: [[String: AnyObject]]) {
    }
    
  • 实现 saveStatus 函数

    /**
    将网络获取的微博数据保存到本地
    parameter array: 网络返回的微博数据数组
    */
    func saveStatus(array: [[String: Any]]) {
    
      // 获取用户的ID
      guard let userId = HMUserAccountViewModel.shared.userAccount?.uid else {
          print("无法获取用户信息")
          return
      }
    
      // 确定sql语句
      let sql = "INSERT INTO T_Status (statusId, status, userId) VALUES (?, ?, ?);"
    
      // 使用SQLiteManager添加到数据库
      // 因为这里是添加多条记录,所以使用事务
      HMSQLiteManager.shared.dbQueue.inTransaction { (db, rollback) -> Void in
          do {
              // 遍历微博字典数组
              for dict in array {
                  // 获取微博ID
                  let statusId = dict["id"] as! NSNumber
    
                  // 微博数据是一个字典.需要转成String再存入数据库
                  // 字典转String,使用JSON序列化成data,再转成String
                  let json = try! JSONSerialization.data(withJSONObject: dict, options: [])
                  let status = String(data: json, encoding: .utf8)!
    
                  // 保存到数据库
                  try db!.executeUpdate(sql, values: [statusId, status, userId])
              }
    
              print("保存了\(array.count)条数据到数据库")
          } catch let error {
              print("保存数据失败: \(error)")
              rollback?.pointee = true
          }
    
      }
    }
    
  • HMStatusListViewModel.swifloadStatus中测试
    // TODO: 测试保存数据到数据库
    HMStatusDAL.shared.saveStatus(array: array)
    

results matching ""

    No results matching ""