swift简单学习之数据下载(AFN)


import UIKit
import AFNetworking
import MBProgressHUD
import Toast

extension NSObject {

    func GET(URLString:String, parameters:[String:AnyObject]?, showHUD:Bool = true, success:((AnyObject?) -> Void)?, failure:((NSError) -> Void)? ){
        let manager = AFHTTPSessionManager()
        manager.requestSerializer.timeoutInterval = 10
        let keyWindow = UIApplication.sharedApplication().delegate!.window!
        if showHUD {
            MBProgressHUD.showHUDAddedTo(keyWindow, animated: true)
        }
        manager.GET(URLString, parameters: parameters, success: { (operation, responseObject) -> Void in
            if showHUD {
                MBProgressHUD.hideAllHUDsForView(keyWindow, animated: true)
            }
            success?(responseObject)
            }, failure: { (aFHTTPRequestOperation, error) -> Void in
                if showHUD {
                    MBProgressHUD.hideAllHUDsForView(keyWindow, animated: true)
                    keyWindow?.makeDefaultToast("网络异常,请检查网络")
                }
                failure?(error)
        })
    }

    func POST(URLString:String, parameters:[String:AnyObject]?, showHUD:Bool = true, success:((AnyObject?) -> Void)?, failure:((NSError) -> Void)?){
        let manager = AFHTTPSessionManager()
        manager.requestSerializer.timeoutInterval = 10
        let keyWindow = UIApplication.sharedApplication().keyWindow
        if showHUD {
            MBProgressHUD.showHUDAddedTo(keyWindow, animated: true)
        }
        manager.POST(URLString, parameters: parameters, success: { (operation, responseObject) -> Void in
            if showHUD {
                MBProgressHUD.hideAllHUDsForView(keyWindow, animated: true)
            }
            success?(responseObject)
            }, failure: { (aFHTTPRequestOperation, error) -> Void in
                if showHUD {
                    MBProgressHUD.hideAllHUDsForView(keyWindow, animated: true)
                    keyWindow?.makeDefaultToast("网络异常,请检查网络")
                }
                failure?(error)
        })
    }

}

extension UIView {
    func makeDefaultToast(message:String) {
        makeToast(message, duration: 2, position: CSToastPositionCenter)
    }
}
方法的参数
  • URLString: 请求的URL地址字符串
  • parameters: 参数Dictionary,可选类型说明可以传递nil;Dictionary的key是字符串类型,value是AnyObject,表示可以传递任何Swift基本数据类型.
  • showHUD: 不传递这个参数,它的默认值会是true,表示请求时候会弹出MBProgressHUD蒙层,禁止用户进行别的操作,false表示是在后台默默的进行网络请求,用户察觉不到.
  • success: 可选类型, 请求成功的回调闭包,闭包的参数是AnyObject?,表示请求成功返回的数据
  • failure: 可选类型, 请求失败的回调闭包,闭包的参数是NSError, 需要函数调用者自己处理异常.


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值