Переглянути джерело

Updated the README code samples for advanced response serialization.

Christian Noon 10 роки тому
батько
коміт
86b95d0ca4
1 змінених файлів з 16 додано та 22 видалено
  1. 16 22
      README.md

+ 16 - 22
README.md

@@ -601,23 +601,21 @@ For example, here's how a response handler using [Ono](https://github.com/mattt/
 
 ```swift
 extension Request {
-    class func XMLResponseSerializer() -> Serializer {
-        return { request, response, data in
+    public static func XMLResponseSerializer() -> GenericResponseSerializer<ONOXMLDocument> {
+        return GenericResponseSerializer { request, response, data in
             if data == nil {
                 return (nil, nil)
             }
 
             var XMLSerializationError: NSError?
-            let XML = ONOXMLDocument(data: data, &XMLSerializationError)
+            let XML = ONOXMLDocument(data: data!, error: &XMLSerializationError)
 
             return (XML, XMLSerializationError)
         }
     }
 
-    func responseXMLDocument(completionHandler: (NSURLRequest, NSHTTPURLResponse?, ONOXMLDocument?, NSError?) -> Void) -> Self {
-        return response(serializer: Request.XMLResponseSerializer()) { request, response, XML, error in
-            completionHandler(request, response, XML as? ONOXMLDocument, error)
-        }
+    public func responseXMLDocument(completionHandler: (NSURLRequest, NSHTTPURLResponse?, ONOXMLDocument?, NSError?) -> Void) -> Self {
+        return response(responseSerializer: Request.XMLResponseSerializer(), completionHandler: completionHandler)
     }
 }
 ```
@@ -631,11 +629,11 @@ Generics can be used to provide automatic, type-safe response object serializati
     init?(response: NSHTTPURLResponse, representation: AnyObject)
 }
 
-extension Alamofire.Request {
+extension Request {
     public func responseObject<T: ResponseObjectSerializable>(completionHandler: (NSURLRequest, NSHTTPURLResponse?, T?, NSError?) -> Void) -> Self {
-        let serializer: Serializer = { (request, response, data) in
-            let JSONSerializer = Request.JSONResponseSerializer(options: .AllowFragments)
-            let (JSON: AnyObject?, serializationError) = JSONSerializer(request, response, data)
+        let responseSerializer = GenericResponseSerializer<T> { request, response, data in
+            let JSONResponseSerializer = Request.JSONResponseSerializer(options: .AllowFragments)
+            let (JSON: AnyObject?, serializationError) = JSONResponseSerializer.serializeResponse(request, response, data)
 
             if let response = response, JSON: AnyObject = JSON {
                 return (T(response: response, representation: JSON), nil)
@@ -644,9 +642,7 @@ extension Alamofire.Request {
             }
         }
 
-        return response(serializer: serializer) { request, response, object, error in
-            completionHandler(request, response, object as? T, error)
-        }
+        return response(responseSerializer: responseSerializer, completionHandler: completionHandler)
     }
 }
 ```
@@ -656,7 +652,7 @@ final class User: ResponseObjectSerializable {
     let username: String
     let name: String
 
-    required init?(response: NSHTTPURLResponse, representation: AnyObject) {
+    @objc required init?(response: NSHTTPURLResponse, representation: AnyObject) {
         self.username = response.URL!.lastPathComponent!
         self.name = representation.valueForKeyPath("name") as! String
     }
@@ -665,7 +661,7 @@ final class User: ResponseObjectSerializable {
 
 ```swift
 Alamofire.request(.GET, "http://example.com/users/mattt")
-         .responseObject { _, _, user: User?, _ in
+         .responseObject { (_, _, user: User?, _) in
              println(user)
          }
 ```
@@ -679,9 +675,9 @@ The same approach can also be used to handle endpoints that return a representat
 
 extension Alamofire.Request {
     public func responseCollection<T: ResponseCollectionSerializable>(completionHandler: (NSURLRequest, NSHTTPURLResponse?, [T]?, NSError?) -> Void) -> Self {
-        let serializer: Serializer = { request, response, data in
+        let responseSerializer = GenericResponseSerializer<[T]> { request, response, data in
             let JSONSerializer = Request.JSONResponseSerializer(options: .AllowFragments)
-            let (JSON: AnyObject?, serializationError) = JSONSerializer(request, response, data)
+            let (JSON: AnyObject?, serializationError) = JSONSerializer.serializeResponse(request, response, data)
 
             if let response = response, JSON: AnyObject = JSON {
                 return (T.collection(response: response, representation: JSON), nil)
@@ -690,9 +686,7 @@ extension Alamofire.Request {
             }
         }
 
-        return response(serializer: serializer) { request, response, object, error in
-            completionHandler(request, response, object as? [T], error)
-        }
+        return response(responseSerializer: responseSerializer, completionHandler: completionHandler)
     }
 }
 ```
@@ -725,7 +719,7 @@ extension Alamofire.Request {
 
 ```swift
 Alamofire.request(.GET, "http://example.com/users")
-         .responseCollection { _, _, users: [User]?, _ in
+         .responseCollection { (_, _, users: [User]?, _) in
              println(users)
          }
 ```