Swift学习第十q-AFNetwoking3.0的封装

Swift学习第十q-AFNetwoking3.0的封装,第1张

概述下面是我的新建的Swift学习交流群,欢迎大家一起来共同学习Swift。 前面写了一部分关于Swift的语法学习,今天要学习的是Swift关于iOS中网络请求的AFNetwoking3.0的封装。 Swift关于iOS中网络请求的AFNetwoking3.0的封装的流程有如下的几个步骤: 使用cocoaPods 下载AFNetwoking的库 建立桥接文件 封装AFNetwokingUtil工具类

下面是我的新建的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
这样下载成功了。

2.建立桥接文件

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。

3.封装AFNetwokingUtil工具类
//// 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的封装所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/web/1075312.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存