Swift 回调不起作用

Posted

技术标签:

【中文标题】Swift 回调不起作用【英文标题】:Swift callback not working 【发布时间】: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 谢谢。你的解决方案奏效了。万分感激。如果你回答,我会接受。 我写了一个答案。 【参考方案1】:

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

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

【讨论】:

以上是关于Swift 回调不起作用的主要内容,如果未能解决你的问题,请参考以下文章

FBSDKSharingDelegate 回调不起作用,即使发布工作正常

jQuery 地址在回调中不起作用

AVAudioSourceNode 在快速游乐场中不起作用

JSONP回调不起作用

Spring webflux请求回调不起作用

带有回调示例的线程不起作用。