【问题标题】:The closure in SwiftSwift 中的闭包
【发布时间】:2014-12-27 12:44:35
【问题描述】:

我刚开始在我的项目中使用 Swift。在阅读 Alamofire 库的说明时,我发现了一些类似的代码:

extension Request {
    class func XMLResponseSerializer() -> Serializer {
        return { (request, response, data) in
            if data == nil {
                return (nil, nil)
            }

            var XMLSerializationError: NSError?
            let XML = ONOXMLDocument.XMLDocumentWithData(data, &XMLSerializationError)

            return (XML, XMLSerializationError)
        }
    }

    func responseXMLDocument(completionHandler: (NSURLRequest, NSHTTPURLResponse?, OnoXMLDocument?, NSError?) -> Void) -> Self {
        return response(serializer: Request.XMLResponseSerializer(), completionHandler: { (request, response, XML, error) in
            completionHandler(request, response, XML, error)
        })
    }
}

在第二个函数responseXMLDocument我想知道为什么我们要重写闭包。如果函数的参数已经是一个闭包,为什么不能这样写:

return response(serializer: Request.XMLResponseSerializer(), completionHandler:completionHandler)

我试过了,但是编译不出来。

【问题讨论】:

    标签: swift closures alamofire


    【解决方案1】:

    在我发布我的问题后我突然想到... 问题是参数的类型不匹配。更具体的说是XML参数,应该是AnyObject?,是OnoXMLDocument?在内部处理程序中。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-11
    • 2016-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-07
    相关资源
    最近更新 更多