专业java、php、iOS、C++、网页设计、平面设计、网络营销、游戏开发、前端与移动开发培训机构
欢迎界面加载用户信息
- 接口文档地址:
http://open.weibo.com/wiki/2/users/show
- 接口地址:
https://api.weibo.com/2/users/show.json
- 请求方式(
GET
) - 请求参数:
参数 | 描述 |
---|---|
access_token | 采用OAuth授权方式为必填参数,其他授权方式不需要此参数,OAuth授权后获得 |
uid | 需要查询的用户ID |
代码实现
HMUserAccount
增加属性/// 用户昵称 var screen_name: String? /// 用户头像地址(大图),180×180像素 var avatar_large: String?
修改
description
// 对象打印信息 override var description: String { let keys = ["access_token", "uid", "expires_in", "expiresDate", "screen_name", "avatar_large"] return dictionaryWithValues(forKeys: keys).description }
修改
归档
和解档
函数,增加screen_name
和avatar_large
属性的归档
和解档
// MARK: - 归档和解档 /// 归档 func encode(with aCoder: NSCoder) { aCoder.encode(access_token, forKey: "access_token") aCoder.encode(uid, forKey: "uid") aCoder.encode(expires_in, forKey: "expires_in") aCoder.encode(expiresDate, forKey: "expiresDate") aCoder.encode(screen_name, forKey: "screen_name") aCoder.encode(avatar_large, forKey: "avatar_large") } /// 解档 required init?(coder aDecoder: NSCoder) { access_token = aDecoder.decodeObject(forKey: "access_token") as? String uid = aDecoder.decodeObject(forKey: "uid") as? String expires_in = aDecoder.decodeDouble(forKey: "expires_in") expiresDate = aDecoder.decodeObject(forKey: "expiresDate") as? Date screen_name = aDecoder.decodeObject(forKey: "screen_name") as? String avatar_large = aDecoder.decodeObject(forKey: "avatar_large") as? String }
在
HMUserAccountViewModel
添加加载用户信息
的方法:loadUserInfo
/** 加载用户信息 - parameter loadUserInfoCallBack: 回调 */ func loadUserInfo(completion: @escaping (Error?) -> ()) { // 判断access_token guard let access_token = userAccount?.access_token else { print("access_token为空") return } // 判断uid guard let uid = userAccount?.uid else { print("uid为空") return } // 5.url let urlString = "https://api.weibo.com/2/users/show.json" // 6.准备参数 let parameters = ["access_token": access_token, "uid": uid] HMNetworkTool.shared.request(method: .GET, URLString: urlString, parameters: parameters, progress: nil, success: { (_, result) in let dict = result as? [String: Any] // 获取数据 self.userAccount?.screen_name = dict?["screen_name"] as? String self.userAccount?.avatar_large = dict?["avatar_large"] as? String // 保存起来 self.saveUserAccount() // 执行闭包 completion(nil) }) { (_, error) in completion(error) } }
在
HMWelcomeViewController
的viewDidLoad
方法,去加载用户最新数据override func viewDidLoad() { super.viewDidLoad() setupUI() // 显示沙盒保存的用户的头像 if let avatar_large = HMUserAccountViewModel.shared.userAccount?.avatar_large { let url = URL(string: avatar_large) iconView.sd_setImage(with: url, placeholderImage: UIImage(named: "avatar_default_big")) } // 获取最新用户数据 HMUserAccountViewModel.shared.loadUserInfo { (error: Error?) in // 显示沙盒保存的用户的头像 if let avatar_large = HMUserAccountViewModel.shared.userAccount?.avatar_large { let url = URL(string: avatar_large) self.iconView.sd_setImage(with: url, placeholderImage: UIImage(named: "avatar_default_big")) } } }