专业java、php、iOS、C++、网页设计、平面设计、网络营销、游戏开发、前端与移动开发培训机构
加载微博数据
- 直接在控制器里面测试微博数据加载
定义模型:
HMStatus
Int
和Bool
不要定义成可选,定义成可选使用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)") } } }
在
CZHomeViewController
的viewDidLoad
加载微博数据override func viewDidLoad() { super.viewDidLoad() // 判断用户已经登录,才需要做下面的操作 if !userlogin { return } setupNav() // 测试加载微博数据 CZStatusViewModel.sharedInstance.loadStatus() }