-
-
Save ashishkakkad8/94edb68144f7d93ecc10 to your computer and use it in GitHub Desktop.
// | |
// AFWrapper.swift | |
// AFSwiftDemo | |
// | |
// Created by Ashish on 10/4/16. | |
// Copyright © 2016 Ashish Kakkad. All rights reserved. | |
// | |
import UIKit | |
import Alamofire | |
import SwiftyJSON | |
class AFWrapper: NSObject { | |
class func requestGETURL(_ strURL: String, success:@escaping (JSON) -> Void, failure:@escaping (Error) -> Void) { | |
Alamofire.request(strURL).responseJSON { (responseObject) -> Void in | |
print(responseObject) | |
if responseObject.result.isSuccess { | |
let resJson = JSON(responseObject.result.value!) | |
success(resJson) | |
} | |
if responseObject.result.isFailure { | |
let error : Error = responseObject.result.error! | |
failure(error) | |
} | |
} | |
} | |
class func requestPOSTURL(_ strURL : String, params : [String : AnyObject]?, headers : [String : String]?, success:@escaping (JSON) -> Void, failure:@escaping (Error) -> Void){ | |
Alamofire.request(strURL, method: .post, parameters: params, encoding: JSONEncoding.default, headers: headers).responseJSON { (responseObject) -> Void in | |
print(responseObject) | |
if responseObject.result.isSuccess { | |
let resJson = JSON(responseObject.result.value!) | |
success(resJson) | |
} | |
if responseObject.result.isFailure { | |
let error : Error = responseObject.result.error! | |
failure(error) | |
} | |
} | |
} | |
} |
Ashish, thanks for this. Im relatively new to swift and am having trouble grasping the concept of closures, specially escaping closures; can you please put in an explanation of how this class func
will be called?
Are there any example of use? Handling the success and failure async was the problem for me.
Helped me a lot . thanks for this one ,
if someone having issues how to use this just follow the steps below .
swift 4.
import the necessary packages. // SwiftyJSON
enum apiResult{
case sucess
case error
}
`class FetchAPI {
static func getAPI(completion:@escaping (apiResult)->()){
AFWrapper.requestGETURL(url, success: { (JSON) -> Void in
DispatchQueue.global(qos: .userInteractive).async
{
// Background Thread , Save Data Here
DispatchQueue.main.async
{
completionHandler(.sucess)//Main UI Thread , Reload your view
}
}
}, failure: { (Error)->Void in
print(Error)
completionHandler(.error)
})
}
}`
now you can call above class in your ViewController
Eg.
override func viewWillAppear(_animated:Bool)
{
FetchAPI. getAPI{ (result) in
switch result{
case .sucess:
// reload your tableview, collection view
case .error:
//show an error here
}
}
}
Alamofire 4.0 Update - Swift 3