簡體   English   中英

Swift中的閉包

[英]The closure in Swift

我剛剛開始在項目中使用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)

我試過了,但是沒有編譯。

我剛發布問題后就想到了...問題是參數的類型不匹配。 更具體地說,它是XML參數,應該是AnyObject ?,是OnoXMLDocument? 在內部處理程序中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM