@@ -601,23 +601,21 @@ For example, here's how a response handler using [Ono](https://github.com/mattt/
601
601
602
602
``` swift
603
603
extension Request {
604
- class func XMLResponseSerializer () -> Serializer {
605
- return { request, response, data in
604
+ public static func XMLResponseSerializer () -> GenericResponseSerializer<ONOXMLDocument> {
605
+ return GenericResponseSerializer { request, response, data in
606
606
if data == nil {
607
607
return (nil , nil )
608
608
}
609
609
610
610
var XMLSerializationError: NSError?
611
- let XML = ONOXMLDocument (data : data, & XMLSerializationError)
611
+ let XML = ONOXMLDocument (data : data! , error : & XMLSerializationError)
612
612
613
613
return (XML, XMLSerializationError)
614
614
}
615
615
}
616
616
617
- func responseXMLDocument (completionHandler : (NSURLRequest, NSHTTPURLResponse? , ONOXMLDocument? , NSError? ) -> Void ) -> Self {
618
- return response (serializer : Request.XMLResponseSerializer ()) { request, response, XML, error in
619
- completionHandler (request, response, XML as? ONOXMLDocument, error)
620
- }
617
+ public func responseXMLDocument (completionHandler : (NSURLRequest, NSHTTPURLResponse? , ONOXMLDocument? , NSError? ) -> Void ) -> Self {
618
+ return response (responseSerializer : Request.XMLResponseSerializer (), completionHandler : completionHandler)
621
619
}
622
620
}
623
621
```
@@ -631,11 +629,11 @@ Generics can be used to provide automatic, type-safe response object serializati
631
629
init? (response : NSHTTPURLResponse, representation : AnyObject )
632
630
}
633
631
634
- extension Alamofire . Request {
632
+ extension Request {
635
633
public func responseObject <T : ResponseObjectSerializable >(completionHandler : (NSURLRequest, NSHTTPURLResponse? , T? , NSError? ) -> Void ) -> Self {
636
- let serializer: Serializer = { ( request, response, data) in
637
- let JSONSerializer = Request.JSONResponseSerializer (options : .AllowFragments )
638
- let (JSON : AnyObject ? , serializationError) = JSONSerializer (request, response, data)
634
+ let responseSerializer = GenericResponseSerializer < T > { request, response, data in
635
+ let JSONResponseSerializer = Request.JSONResponseSerializer (options : .AllowFragments )
636
+ let (JSON : AnyObject ? , serializationError) = JSONResponseSerializer. serializeResponse (request, response, data)
639
637
640
638
if let response = response, JSON: AnyObject = JSON {
641
639
return (T (response : response, representation : JSON), nil )
@@ -644,9 +642,7 @@ extension Alamofire.Request {
644
642
}
645
643
}
646
644
647
- return response (serializer : serializer) { request, response, object, error in
648
- completionHandler (request, response, object as? T, error)
649
- }
645
+ return response (responseSerializer : responseSerializer, completionHandler : completionHandler)
650
646
}
651
647
}
652
648
```
@@ -656,7 +652,7 @@ final class User: ResponseObjectSerializable {
656
652
let username: String
657
653
let name: String
658
654
659
- required init? (response : NSHTTPURLResponse, representation : AnyObject ) {
655
+ @objc required init? (response : NSHTTPURLResponse, representation : AnyObject ) {
660
656
self .username = response.URL ! .lastPathComponent !
661
657
self .name = representation.valueForKeyPath (" name" ) as! String
662
658
}
@@ -665,7 +661,7 @@ final class User: ResponseObjectSerializable {
665
661
666
662
``` swift
667
663
Alamofire.request (.GET , " http://example.com/users/mattt" )
668
- .responseObject { _ , _ , user: User? , _ in
664
+ .responseObject { ( _ , _ , user : User? , _ ) in
669
665
println (user)
670
666
}
671
667
```
@@ -679,9 +675,9 @@ The same approach can also be used to handle endpoints that return a representat
679
675
680
676
extension Alamofire .Request {
681
677
public func responseCollection <T : ResponseCollectionSerializable >(completionHandler : (NSURLRequest, NSHTTPURLResponse? , [T]? , NSError? ) -> Void ) -> Self {
682
- let serializer: Serializer = { request, response, data in
678
+ let responseSerializer = GenericResponseSerializer < [T] > { request, response, data in
683
679
let JSONSerializer = Request.JSONResponseSerializer (options : .AllowFragments )
684
- let (JSON : AnyObject ? , serializationError) = JSONSerializer (request, response, data)
680
+ let (JSON : AnyObject ? , serializationError) = JSONSerializer. serializeResponse (request, response, data)
685
681
686
682
if let response = response, JSON: AnyObject = JSON {
687
683
return (T.collection (response : response, representation : JSON), nil )
@@ -690,9 +686,7 @@ extension Alamofire.Request {
690
686
}
691
687
}
692
688
693
- return response (serializer : serializer) { request, response, object, error in
694
- completionHandler (request, response, object as? [T], error)
695
- }
689
+ return response (responseSerializer : responseSerializer, completionHandler : completionHandler)
696
690
}
697
691
}
698
692
```
@@ -725,7 +719,7 @@ extension Alamofire.Request {
725
719
726
720
``` swift
727
721
Alamofire.request (.GET , " http://example.com/users" )
728
- .responseCollection { _ , _ , users: [User]? , _ in
722
+ .responseCollection { ( _ , _ , users : [User]? , _ ) in
729
723
println (users)
730
724
}
731
725
```
0 commit comments