For asynchronous requests, I use Alamofire. I have created one method for requesting async data.
func requestData(method: Method, urlString: String, onSuccess: (AnyObject) -> Void , onFailure: (NSError) -> Void, sender: UIViewController, postParams:AnyObject? = nil) {
let AFmanager = Manager(configuration: seesionConfiguration)
let URL = NSURL(string: urlString)!
let urlRequest = NSMutableURLRequest(URL: URL)
urlRequest.HTTPMethod = method.rawValue
if let param: AnyObject = postParams {
urlRequest.HTTPBody = NSJSONSerialization.dataWithJSONObject(param, options: nil, error: nil)
}
if method == .POST {
urlRequest.addValue("application/json", forHTTPHeaderField: "Content-Type")
}
urlRequest.addValue("application/json", forHTTPHeaderField: "Accept")
AFmanager.request(urlRequest)
.responseJSON { (request, response, JSONResult, error) in
if (error == nil) {
onSuccess(JSONResult!)
} else {
onFailure(error!)
}
}
}
Here, I have made postParams
of type AnyObject
as parameter can be of any dictionary type. Is there another way of defining the method so that postParams
can be checked to be of type dictionary?
Any other improvement/suggestion?