专业java、php、iOS、C++、网页设计、平面设计、网络营销、游戏开发、前端与移动开发培训机构
微博字典转模型
- 定义
HMStatusViewModel
,一个HMStatusViewModel包含一个微博模型/// 一个HMStatusViewModel包含一个微博模型 class HMStatusViewModel: NSObject { var status: HMStatus init(status: HMStatus) { self.status = status } }
完成
HMStatusListViewModel
的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)") // 定义空数组保存模型数据 var statusVMs = [HMStatusViewModel]() // 获取返回数据中的微博数据 if let dict = result as? [String: Any], let array = dict["statuses"] as? [[String: Any]] { // 1遍历数组字典转模型 for dict in array { let status = HMStatus(dict: dict) let statusVM = HMStatusViewModel(status: status) statusVMs.append(statusVM) } } print("获取到微博模型 = \(statusVMs)") }) { (_, error) in print("error: \(error)") } } }
- 可以将网络返回的微博字典转成模型了
转成模型后回调
/** 加载微博数据 */ func loadStatus(completion: @escaping ([HMStatusViewModel]?, Error?) -> Void) { // 判断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)") // 定义空数组保存模型数据 var statusVMs = [HMStatusViewModel]() // 获取返回数据中的微博数据 if let dict = result as? [String: Any], let array = dict["statuses"] as? [[String: Any]] { // 1遍历数组字典转模型 for dict in array { let status = HMStatus(dict: dict) let statusVM = HMStatusViewModel(status: status) statusVMs.append(statusVM) } } completion(statusVMs, nil) }) { (_, error) in completion(nil, error) } }
修改
HomeTableViewController
中的方法调用/** 加载微博数据 */ class CZHomeViewController: CZBaseTableViewController { override func viewDidLoad() { super.viewDidLoad() ... // 测试加载微博数据 HMStatusListViewModel.shared.loadStatus { (statusVMs: [HMStatus]?, error: Error?) in if error != nil { print("加载微博数据出错 error: \(error)") return } print("加载到微博数据: \(statusVMs)") } } }