Skip to content

Commit 86b95d0

Browse files
committed
Updated the README code samples for advanced response serialization.
1 parent 1978c2c commit 86b95d0

File tree

1 file changed

+16
-22
lines changed

1 file changed

+16
-22
lines changed

README.md

+16-22
Original file line numberDiff line numberDiff line change
@@ -601,23 +601,21 @@ For example, here's how a response handler using [Ono](https://github.com/mattt/
601601

602602
```swift
603603
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
606606
if data == nil {
607607
return (nil, nil)
608608
}
609609

610610
var XMLSerializationError: NSError?
611-
let XML = ONOXMLDocument(data: data, &XMLSerializationError)
611+
let XML = ONOXMLDocument(data: data!, error: &XMLSerializationError)
612612

613613
return (XML, XMLSerializationError)
614614
}
615615
}
616616

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)
621619
}
622620
}
623621
```
@@ -631,11 +629,11 @@ Generics can be used to provide automatic, type-safe response object serializati
631629
init?(response: NSHTTPURLResponse, representation: AnyObject)
632630
}
633631

634-
extension Alamofire.Request {
632+
extension Request {
635633
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)
639637

640638
if let response = response, JSON: AnyObject = JSON {
641639
return (T(response: response, representation: JSON), nil)
@@ -644,9 +642,7 @@ extension Alamofire.Request {
644642
}
645643
}
646644

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)
650646
}
651647
}
652648
```
@@ -656,7 +652,7 @@ final class User: ResponseObjectSerializable {
656652
let username: String
657653
let name: String
658654

659-
required init?(response: NSHTTPURLResponse, representation: AnyObject) {
655+
@objc required init?(response: NSHTTPURLResponse, representation: AnyObject) {
660656
self.username = response.URL!.lastPathComponent!
661657
self.name = representation.valueForKeyPath("name") as! String
662658
}
@@ -665,7 +661,7 @@ final class User: ResponseObjectSerializable {
665661

666662
```swift
667663
Alamofire.request(.GET, "http://example.com/users/mattt")
668-
.responseObject { _, _, user: User?, _ in
664+
.responseObject { (_, _, user: User?, _) in
669665
println(user)
670666
}
671667
```
@@ -679,9 +675,9 @@ The same approach can also be used to handle endpoints that return a representat
679675

680676
extension Alamofire.Request {
681677
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
683679
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)
685681

686682
if let response = response, JSON: AnyObject = JSON {
687683
return (T.collection(response: response, representation: JSON), nil)
@@ -690,9 +686,7 @@ extension Alamofire.Request {
690686
}
691687
}
692688

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)
696690
}
697691
}
698692
```
@@ -725,7 +719,7 @@ extension Alamofire.Request {
725719

726720
```swift
727721
Alamofire.request(.GET, "http://example.com/users")
728-
.responseCollection { _, _, users: [User]?, _ in
722+
.responseCollection { (_, _, users: [User]?, _) in
729723
println(users)
730724
}
731725
```

0 commit comments

Comments
 (0)