首先使用cocoapod来配置Just 首先创建一个空的文件Podfile
在Podflie中添加一句话
use_frameworks! pod 'Just'
用open with External Editor用终端来打开 转换到根目录下 用cd..再ls退到根目录,随后再输入命令来安装Just
jsonExport明天再介绍
使用jsonExport 可以直接使用其固定的类
把从网络上获取到的json字符串拿过来 随后可以生成你想要得类 例如swift的class或者swift类型的结构体等,这个就要看个人的需求了,随后勾掉帮助方法,随后即可生成所需的文件,将生成的文件拷贝进项目中的model小组即可
随后编netWorker类,可以用来统一网络请求
大致的网络请求的步骤是这样的
随后通过枚举,来加载不同的请求的网址和参数
enum NetWorkHelper{ case courseID(authtoken:String,url:String)随后定义通用的请求网址和通用的请求参数
随后进行网络请求 在这个例子汇总item是在网络请求后的一个数组,所以用它来进行保存 在后来的判断过程中,要判断是否是个json的字符串,或者retcode是否为0 为0才成功等,恐怕自己太渣,用了最傻的if else语句来进行判断 大神是用guard的语句,因此,稍后奉上 用闭包进行最后的完成 swift的guard语句,主要是为了请求当if不成立的时候来判断比较好的博客有http://www.jianshu.com/p/3a8e45af7fdd
import Just enum NetWorkHelper{ case courseID(authtoken:String,url:String) //参数 static var params = [String:AnyObject]() //完成的闭包 返回items func getItems(completion:([Item]?,String?) -> Void){ var error:String? //保存result的 var result:[Item]? switch self { case .courseID(authtoken: let auth,let url): //配置参数 NetWorkHelper.params["authtoken"] = auth print(NetWorkHelper.params) print(url) Just.get(url, params: NetWorkHelper.params,asyncCompletionHandler: { (r) in if r.ok{ print(222) //保证json是个字符串 if let jsonDic = r.json as? NSDictionary{ let retcode = jsonDic["retcode"] as! NSNumber if(retcode != 0){ error = "授权错误" }else{ let rootC = RootClass(fromDictionary: jsonDic) result = rootC.items } }else{ error = "不是json字符串" } }else{ error = "服务器错误" } //确保字典中的retcode为0 completion(result,error) }) } } }
import Just enum NetworkHelper { case WeeklyWeather(cityid: String) //http://api.k780.com:88/?app=weather.future&weaid=1&&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=json private static var params = [ "app":"weather.future", // "appkey":"12215", "sign":"24c28ec9c8629ce27cfbec8af12cf353", "format":"json" ] private static let baseUrl = "http://api.k780.com:88" func getWeather(completion: ([Result]?, String?) -> Void) { var error: String? var results: [Result]? switch self { case .WeeklyWeather(cityid: let weaid): NetworkHelper.params["weaid"] = weaid Just.get(NetworkHelper.baseUrl, params: NetworkHelper.params,asyncCompletionHandler: { (r) in if r.ok { //确保返回结果是一个json,并可转换为一个字典 guard let jsonDict = r.json as? NSDictionary else { error = "不是一个json字符串" return } //确保字典中的success字段的值是1 guard let success = jsonDict["success"] where success as? String == "1" else { error = "返回数据格式不对,或者授权错误" return } let weather = Weather(fromDictionary: jsonDict) results = weather.result } else { error = "服务器出错" } completion(results, error) }) } } }这样可以很好的将网络请求与viewController分离开来
viewController中只要一段就够了
import UIKit class ViewController: UIViewController { var results1 = [Item]() override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. let course = NetWorkHelper.courseID(authtoken: "876E65B5AFB21A0708EC6B04F28ED73D08D1ECC41182DBC0",url:"http://dodo.hznu.edu.cn/api/coursequery") // print(course) course.getItems {(results,error) in if let results2 = results{ self.results1 = results2 dispatch_async(dispatch_get_main_queue(), { print(self.results1[0].id) }) //print(self.results1) }else{ print(error) } } }
Just的参考文档
http://docs.justhttp.net/QuickStart.html
JSONExport的参考
https://github.com/yagamis/JSONExport