Нечто подобное могло бы быть то, что вы искали:
extension Request {
public func debugLog() -> Self {
#if DEBUG
debugPrint(self)
#endif
return self
}
}
Использование:
Alamofire.request(.GET, "http://httpbin.org/get", parameters: ["foo": "bar"])
.debugLog()
.response {…}
Если вы хотите напечатать все ответы, вы можете написать свой собственный метод ответа, похожий на метод responseObject() в верхней части этого учебника:
http://www.raywenderlich.com/87595/intermediate-alamofire-tutorial
[Обновление:. Добавлено ниже по запросу от @trauzti]
Вот как можно было бы сделать подход responseObject() для того, чтобы напечатать выход на каждый запрос.
Caveat lector: Я лично не тестировал этот код и, вероятно, делал бы разные варианты в производстве. Это просто показывает, как код учебника Wenderlich может включать протоколирование отладки. Также обратите внимание: начиная с учебника до Swift 2.0, я использовал старый println() вместо print().
@objc public protocol ResponseObjectSerializable {
init(response: NSHTTPURLResponse, representation: AnyObject)
}
extension Alamofire.Request {
public func responseObject<T: ResponseObjectSerializable>(completionHandler: (NSURLRequest, NSHTTPURLResponse?, T?, NSError?) -> Void) -> Self {
let serializer: Serializer = { (request, response, data) in
#if DEBUG
println("Request: \(request.URL)")
#endif
let JSONSerializer = Request.JSONResponseSerializer(options: .AllowFragments)
let (JSON: AnyObject?, serializationError) = JSONSerializer(request, response, data)
if response != nil && JSON != nil {
#if DEBUG
println("Response:")
debugPrint(JSON)
#endif
return (T(response: response!, representation: JSON!), nil)
} else {
#if DEBUG
println("Failed Serialization:")
debugPrint(serializationError)
#endif
return (nil, serializationError)
}
}
return response(serializer: serializer, completionHandler: { (request, response, object, error) in
completionHandler(request, response, object as? T, error)
})
}
}
Awesome, спасибо! Не могли бы вы опубликовать код, который вы имеете в виду для расширения responseObject? – trauzti
Btw код не будет работать с Alamofire 3 :) –
Не успел пересмотреть это прямо сейчас, @MatthieuRiegler. Позаботьтесь о совместимости с v3? :) – clozach