网络请求
来源:互联网 发布:php form表单提交 编辑:程序博客网 时间:2024/06/05 06:37
标题 网络请求
主题
前提需要用pod 导入 Alamofire SwiftyJSON 这两个包
1.先建立一个请求json数据的方法(request文件夹)
class RequestClient:NSObject 类
class func RequestData(url:String,params: [String: String], callback: (String?, JSON?) -> (Void)){
Alamofire .request(.GET,url,parameters: params) .responseJSON() { response in
if response.result.isSuccess{
let json = JSON(response.result.value!)
callback(nil, json)
}
else{
print("数据加载失败")
}
}
}
2.建立了json请求数据需要处理所以需要一个方法来解析获得的数据(viewmodel)
//didgetdata 顾名思义,就是已将获取到的数据类型一个闭包,以后调用数据的话直接调用这个闭包
enum RequestUrls: String {
case BANNER = "http://qt.qq.com/static/pages/news/phone/c13_list_1.shtml"
}
var didGetData: (([JSONModel]) -> (Void))? 采用协议
func getData() {
//把所有要请求的数据写成一个枚举,以后直接调用
RequestClient.RequestData(RequestUrls.BANNER.rawValue, params: [:],callback: {error, json in
if let err = error {
print(err)
}else {
let jsonArr = json!["list"].arrayValue
var result: [JSONModel] = []
// json arr 就是 json 里的数据
for jsonItem in jsonArr {
let bannerModel = BannerModel()
//这里调用的还是一个反射的方法
let handler = BasicJSONHandler(jsonModel: bannerModel)
let realModel = handler.handleJSON(jsonItem)
result.append(realModel)
}
self.didGetData?(result)
}
})
}
3.反射json数据(manager 一个文件夹里需要好多东西)
//jsonHandeler 是一个协议,谁调用它谁就要采用这个协议
class BasicJSONHandler: NSObject, JSONHandler {
var jsonModel: JSONModel
init(jsonModel: JSONModel) {
self.jsonModel = jsonModel 后面的jsonmodel 是一个父类 ,所有的Model类都是继承于这个类,所有初始化都必须在super init 调用之前实现
super.init()
}
实现反射的方法 同时也是实现协议
func handleJSON(json: JSON) -> JSONModel {
//json即时第一个model里的数据
let mirror = Mirror(reflecting: jsonModel)
for item in mirror.children {
if let label = item.label {
jsonModel.setValue(json[label].stringValue, forKey: label)
}
}
return jsonModel
}
}
4.y本人自学整理有不对的多多指教
- 网络请求
- 网络请求
- 网络请求
- 网络请求
- 网络请求
- 网络请求
- 网络请求
- 网络请求
- 网络请求
- 网络请求
- 网络请求
- 网络请求
- 网络请求
- 网络请求
- 网络请求
- 网络请求
- 网络请求
- 网络请求
- CodeForces 628B(数论)
- HTML基础语法(3)
- TCP/IP、Http、Socket的区别
- tango with django chapter 4 Django Basics
- 1006. Sign In and Sign Out (25)
- 网络请求
- Mysql性能优化一
- js获取model的值
- oracle IMP-00024: 只能指定一种模式 (TABLES, FROMUSER 或 FULL)
- React-native 环境搭建
- C++0X(C++11)的std:mutex、std::thread与Windows API性能对比
- ASP.NET-使用Alert事件导致页面错位的解决方法
- Qt实现滚动字幕效果
- 前端框架OnsenUI学习之页面结构介绍