下面是我的新建的Swift学习交流群,欢迎大家一起来共同学习Swift。
前面写了一部分关于Swift的语法学习,今天要学习的是Swift关于iOS中网络请求的AFNetwoking3.0的封装。
Swift关于iOS中网络请求的AFNetwoking3.0的封装的流程有如下的几个步骤:
使用cocoaPods 下载AFNetwoking的库 建立桥接文件 封装AFNetwokingUtil工具类 使用协议进行传值 案例的实现 1.使用cocoaPods 下载AFNetwoking的库platform :ios,'8.0'use_frameworks!target 'HelloSwfit' dopod 'AFNetworking','~> 3.0'pod 'SwiftyJsON','~> 2.3'pod 'Toast-Swift','~> 1.3.0'end
接着在终端命令执行:pod update –verbose –no-repo-update
这样下载成功了。
1.1在用Swift使用OC中得类文件的时候,需要进行桥接,首先建一个.h的头文件。
注意:桥接文件的命名规则:项目名-BrIDging-header.Swift
#import "AFNetworking/AFNetworking.h"
1.2 在Build-settings -> Swift ComplIEr - Code Generaton —>Objective C BrIDing Herder中添加自己的桥接文件。
如下图:
这样的话,桥接文件已经OK。
//// AFNetWorkingUtil.swift// HelloSwfit//// Created by lIDong on 16/5/17.// copyright © 2016年 lIDong. All rights reserved.//import UIKit/// 对AFNetworking的封装class AFNetWorkingUtil { /// 基础URL let BASE_URL = "http://v.juhe.cn" /// AFhttpSessionManager let _sessionManager = AFhttpSessionManager() /// 定义一个响应结果的传递代理 var delegate: ResponseResultDelegate? // 单例 全局的的网络工具 class var sharedInstance: AFNetWorkingUtil { struct Static { static var oncetoken : dispatch_once_t = 0 static var instance : AFNetWorkingUtil? = nil } dispatch_once(&Static.oncetoken) { Static.instance = AFNetWorkingUtil() } return Static.instance! } /** 获取baseUrl - parameter baseUrl: 基础的url - returns: URL */ func getBaseUrl(baseUrl:String) ->String{ return BASE_URL } /** post请求 - parameter action: 请求的action - parameter params: 请求参数 */ func post(action:String,params:Dictionary<String,String>){ _sessionManager.POST(getBaseUrl(BASE_URL)+action,parameters: params,success: { (operation:NSURLSessionDataTask?,responSEObj:AnyObject?) in print(responSEObj) self.delegate?.responseSuccess(responSEObj) }) { (operation:NSURLSessionDataTask?,error:NSError) in print(error) self.delegate?.responseError(error) } } /** get请求 - parameter action: 请求的action - parameter params: 请求参数 */ func get(action:String,String>){ _sessionManager.GET(getBaseUrl(BASE_URL)+action,responSEObj:AnyObject?) in print(responSEObj) self.delegate?.responseSuccess(responSEObj) }) { (operation:NSURLSessionDataTask?,error:NSError) in print(error) self.delegate?.responseError(error) } }}4.使用协议进行传值
//// ResponseResult.swift// HelloSwfit//// Created by lIDong on 16/6/5.// copyright © 2016年 lIDong. All rights reserved.///** * 网络请求响应结果的回调 */protocol ResponseResultDelegate { /** 响应成功的回调 - parameter response: 成功的信息 */ func responseSuccess(responSEObj:AnyObject?) /** 响应失败的回调 - parameter responseError: 失败的信息 */ func responseError(responSEObj:AnyObject?)}5.案例的实现
//// NetWokingGetDemo.swift// HelloSwfit//// Created by lIDong on 16/6/5.// copyright © 2016年 lIDong. All rights reserved.//import Foundationimport SwiftyJsONclass NetWokingGetDemo: UItableVIEwController,ResponseResultDelegate { let aFUtils = AFNetWorkingUtil.sharedInstance var items:Array = [String]() overrIDe func vIEwDIDLoad() { super.vIEwDIDLoad() aFUtils.delegate = self let action:String = "/dream/category" let dic = ["key":"c73b082b0c150b3bcba2cea1b96a8922"] aFUtils.get(action,params: dic) self.tableVIEw.delegate = self self.tableVIEw.dataSource = self self.Title = "周公解梦" } func responseError(responSEObj: AnyObject?) { Util.log("responseSuccess",message: "服务器异常!") } func responseSuccess(responSEObj: AnyObject?) { let Json = JsON(responSEObj!) Util.log("responseSuccess",message: Json["error_code"].intValue) Util.log("responseSuccess",message: Json["reason"].string!) Util.log("responseSuccess",message: Json["result"].array!.count) let d = Json["result"].array!.count if d > 0 { let List: Array<JsON> = Json["result"].array! for item in List { items.append(item["name"].string!) } self.tableVIEw.reloadData() } } overrIDe func tableVIEw(tableVIEw: UItableVIEw,numberOfRowsInSection section: Int) -> Int { return items.count } overrIDe func tableVIEw(tableVIEw: UItableVIEw,cellForRowAtIndexPath indexPath: NSIndexPath) -> UItableVIEwCell { let cell = UItableVIEwCell() cell.textLabel?.text = items[indexPath.row] return cell; } overrIDe func tableVIEw(tableVIEw: UItableVIEw,dIDSelectRowAtIndexPath indexPath: NSIndexPath) { Util.showToast(self,message: items[indexPath.row]) } }
代码地址:
运行的效果:
以上是内存溢出为你收集整理的Swift学习第十q-AFNetwoking3.0的封装全部内容,希望文章能够帮你解决Swift学习第十q-AFNetwoking3.0的封装所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)