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 回调不起作用的主要内容,如果未能解决你的问题,请参考以下文章