【问题标题】:Swift callback not workingSwift 回调不起作用
【发布时间】:2016-12-04 19:07:08
【问题描述】:

我正在尝试使用 google book api 获取图书详细信息。出错时,代码会调用回调方法,但不会被调用。

代码由 - Nicholas Addison 提供的 Git Hub 示例项目

import Alamofire
import SwiftyJSON

class BooksManager
{
    static let sharedInstance = BooksManager()

    func getBook(_ isbn: String, callback: @escaping (_ error: NSError?, _ book: Book?)->() )
    {
        Alamofire.request(
            GoogleBookRouter.searchByISBN(isbn: isbn) )
            .responseJSON
            {
                 response in

                if let error = response.result.error
                {
                    logger.debug("Failed to call Google Books API: " + error.localizedDescription)

                    //FIXME:- wrap Alamofire error before returning
                    callback(error as NSError?, nil)
                    return
                }
             }
}

【问题讨论】:

  • 您是否尝试添加断点并检查错误?
  • 这是 Swift 3 吗?如果是,则删除完成处理程序中的所有参数标签。 (NSError?, Book?)->().
  • @vadian 谢谢。你的解决方案奏效了。万分感激。如果你回答,我会接受。
  • 我写了一个答案。

标签: swift alamofire


【解决方案1】:

在 Swift 3 中,所有闭包中的参数标签都已被移除,所以只需编写

func getBook(_ isbn: String, callback: @escaping (NSError?, Book?) -> () ) ...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-13
    • 2013-11-20
    • 2018-04-08
    • 2015-11-09
    • 2012-03-19
    • 2012-10-09
    • 2013-06-05
    • 2018-12-17
    相关资源
    最近更新 更多