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

加载微博数据

  • 直接在控制器里面测试微博数据加载
  • 定义模型: HMStatus

    • IntBool 不要定义成可选,定义成可选使用 KVC setValuesForKeysWithDictionary 会出错.
    • pic_urls是通过分析网络返回的数据的出得

      /// 微博模型
      class HMStatus: NSObject {
        // MARK: - 属性
      
        /// 微博创建时间
        var created_at: String?
      
        /// 微博ID
        var id: Int = 0
      
        /// 微博信息内容
        var text: String?
      
        /// 微博来源
        var source: String?
      
        /// 转发数
        var reposts_count: Int = 0
      
        /// 评论数
        var comments_count: Int = 0
      
        /// 表态数(赞)
        var attitudes_count: Int = 0
      
        // 通过分析微博返回的数据 是一个数组,数组里面是一个字典["thumbnail_pic": url]
        /// 图片地址数组
        var pic_urls: [[String: String]]?
      }
      
    • 字典转模型构造函数

      /// 字典转模型
      init(dict: [String: Any]) {
        super.init()
      
        // KVC赋值
        setValuesForKeys(dict)
      }
      
      // 处理字典的key在模型中没有对应的属性
      override func setValue(_ value: Any?, forUndefinedKey key: String) {}
      
      /// 对象打印方法
      override var description: String {
        let keys = ["id", "created_at", "text", "source", "pic_urls", "reposts_count", "comments_count", "attitudes_count"]
      
        // 根据数组中的元素,去模型中获取对应的值,并生成字典
        return "\n\t:微博模型: \(dictionaryWithValues(forKeys: keys).description)"
      }
      
    • 定义 HMStatusViewModel 单例来处理 HMStatus 加相关操作,添加 loadStatus 方法来加载微博数据

      /// 处理 HMStatus 相关操作,添加 loadStatus 方法来加载微博数据
      class HMStatusListViewModel: NSObject {
      
        static let shared: HMStatusListViewModel = HMStatusListViewModel()
      
        /**
         加载微博数据
         */
        func loadStatus() {
            // 判断accessToken是否为空
            guard let access_token = HMUserAccountViewModel.shared.userAccount?.access_token else {
                // accessToken为空
                return
            }
      
            // url
            let urlString = "2/statuses/home_timeline.json"
      
            // 参数
            let parameters = ["access_token": access_token]
      
            // 调用AFN GET请求
            HMNetworkTool.shared.request(method: .GET, URLString: urlString, parameters: parameters, progress: nil, success: { (_, result) in
                print("result: \(result)")
                }) { (_, error) in
                    print("error: \(error)")
            }
        }
      }
      
    • CZHomeViewControllerviewDidLoad 加载微博数据

      override func viewDidLoad() {
        super.viewDidLoad()
      
        // 判断用户已经登录,才需要做下面的操作
        if !userlogin {
            return
        }
      
        setupNav()
        // 测试加载微博数据
        CZStatusViewModel.sharedInstance.loadStatus()
      }
      

results matching ""

    No results matching ""