闭包 尾随闭包

嵌套函数:
这里写图片描述
闭包:
这里写图片描述

import UIKit
import AFNetworking
import MBProgressHUD
import Toast

struct NetManager {

    static let URLStringBooks = "https://api.douban.com/v2/book/search"
    static let KeyBooks = "books"
    static let netError = "网络异常,请检查网络"
    static let pageSize = 10

    static func getBooks(tag:String, page:Int,resultClosure:(Bool,[Book]!) -> Void) {
        NetManager.GET(URLStringBooks, parameters: ["tag":tag,"start":page * pageSize,"count":pageSize],showHUD: false, success: { (responseObject) -> Void in
                var books = [Book]()
                if let dict = responseObject as? [String:NSObject],array = dict[self.KeyBooks] as? [[String:NSObject]] {
                    for dict in array {
                        books.append(Book(dict: dict))
                    }
                }
                resultClosure(true,books)
            }) { (error) -> Void in
                resultClosure(false,nil)
        }

    }

    static func getBookTitles(tag:String, page:Int,resultClosure:([String]) -> Void) {
        NetManager.GET(URLStringBooks, parameters: ["tag":tag,"start":0,"count":10,"fields":"title"],showHUD: false, success: { (responseObject) -> Void in
                var searchTitles = [String]()
                if let dict = responseObject as? [String:NSObject],array = dict[self.KeyBooks] as? [[String:NSObject]] {
                    for dict in array {
                        if let title = dict["title"] as? String {
                            searchTitles.append(title)
                        }
                    }
                }
                resultClosure(searchTitles)
            }) { (error) -> Void in
            }
    }

    static func GET(URLString:String, parameters:[String:NSObject]?, showHUD:Bool = true, success:((NSObject?) -> Void)?, failure:((NSError) -> Void)?) {

        let manager = AFHTTPSessionManager()
        manager.requestSerializer.timeoutInterval = 10

        let mainWindow = UIApplication.sharedApplication().delegate!.window!

        if showHUD {
            MBProgressHUD.showHUDAddedTo(mainWindow, animated: true)
        }

        manager.GET(URLString, parameters: parameters, success: { (task, responseObject) -> Void in
            if showHUD {
                MBProgressHUD.hideAllHUDsForView(mainWindow, animated: true)
            }
            success?(responseObject as? NSObject)
            }) { (task, error) -> Void in
                if showHUD {
                    MBProgressHUD.hideAllHUDsForView(mainWindow, animated: true)
                    mainWindow?.makeToast(netError)
                }
                failure?(error)
        }

    }

    static func POST(URLString:String, parameters:[String:NSObject]?, showHUD:Bool = true, success:((NSObject?) -> Void)?, failure:((NSError) -> Void)?) {

        let manager = AFHTTPSessionManager()
        manager.requestSerializer.timeoutInterval = 10

        let mainWindow = UIApplication.sharedApplication().delegate!.window!

        if showHUD {
            MBProgressHUD.showHUDAddedTo(mainWindow, animated: true)
        }

        manager.POST(URLString, parameters: parameters, success: { (task, responseObject) -> Void in
            if showHUD {
                MBProgressHUD.hideAllHUDsForView(mainWindow, animated: true)
            }
            success?(responseObject as? NSObject)
            }) { (task, error) -> Void in
                if showHUD {
                    MBProgressHUD.hideAllHUDsForView(mainWindow, animated: true)
                    mainWindow?.makeToast(netError)
                }
                failure?(error)
        }
    }
}

调用:

   NetManager.getBooks(self.tag, page: 0, resultClosure: { (result, books) -> Void in
                self.tableView.headerEndRefresh()
                if result {
                    self.page = 1
                    self.books = books
                    self.tableView.reloadData()
                } else {
                    self.view.makeToast("请求数据失败")
                }
            })

转载于:https://www.cnblogs.com/melons/p/5791905.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值