Skip to content

Instantly share code, notes, and snippets.

@idrisr
Created July 26, 2016 07:42
Show Gist options
  • Save idrisr/ecf1449f27dc93e5f4c7566127d38cc4 to your computer and use it in GitHub Desktop.
Save idrisr/ecf1449f27dc93e5f4c7566127d38cc4 to your computer and use it in GitHub Desktop.
public func responseArray<T: ResponseJSONObjectSerializable>(completionHandler: Response<[T], NSError> -> Void) -> Self {
let serializer = ResponseSerializer<[T], NSError> { request, response, data, error in
guard error == nil else {
return .Failure(error!)
}
guard let responseData = data else {
let failureReason = "Array could not be serialized because input data was nil."
let error = Error.errorWithCode(.DataSerializationFailed,
failureReason: failureReason)
return .Failure(error)
}
let JSONResponseSerializer = Request.JSONResponseSerializer(options: .AllowFragments)
let result = JSONResponseSerializer.serializeResponse(request, response,
responseData, error)
switch result {
case .Failure(let error):
return .Failure(error)
case .Success(let value):
let json = SwiftyJSON.JSON(value)
// check for "message" errors in the JSON
if let errorMessage = json["message"].string {
let error = Error.errorWithCode(.DataSerializationFailed,
failureReason: errorMessage)
return .Failure(error)
}
var objects: [T] = []
for (_, item) in json {
if let object = T(json: item) {
objects.append(object)
}
}
return .Success(objects)
}
}
return response(responseSerializer: serializer, completionHandler: completionHandler)
}
}
@idrisr
Copy link
Author

idrisr commented Jul 26, 2016

From the tableview tag

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment