如何用Alomofire分离swift中的API调用类



我想创建自己的网络管理器类,这样我就可以像没有互联网一样全局处理错误,然后我只能显示该类的弹出窗口。为此,我使用Alomofire,并希望借助swiftjson库解析JSON中的数据。我已经尝试过使用我的代码,但无法将数据从网络类传递到调用函数的位置。

import UIKit
import Alamofire
import SwiftyJSON
import SystemConfiguration
class WebServiceHelper: NSObject {
typealias SuccessHandler = (JSON) -> Void
typealias FailureHandler = (Error) -> Void
// MARK: - Internet Connectivity
class func isConnectedToNetwork() -> Bool {
var zeroAddress = sockaddr_in()
zeroAddress.sin_len = UInt8(MemoryLayout<sockaddr_in>.size)
zeroAddress.sin_family = sa_family_t(AF_INET)
guard let defaultRouteReachability = withUnsafePointer(to: &zeroAddress, {
$0.withMemoryRebound(to: sockaddr.self, capacity: 1) {
SCNetworkReachabilityCreateWithAddress(nil, $0)
}
}) else {
return false
}
var flags: SCNetworkReachabilityFlags = []
if !SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags) {
return false
}
let isReachable = flags.contains(.reachable)
let needsConnection = flags.contains(.connectionRequired)
return (isReachable && !needsConnection)
}
// MARK: - Helper Methods
class func getWebServiceCall(_ strURL : String, isShowLoader : Bool, success : @escaping SuccessHandler, failure : @escaping FailureHandler) {
if isConnectedToNetwork()  {
print(strURL)
if isShowLoader == true {
//AppDelegate.getDelegate().showLoader()
}
AF.request(strURL).responseJSON { (resObj) -> Void in
print(resObj.result)
}
}else {
//CommonMethods.showAlertWithError("", strMessage: Messages.NO_NETWORK, withTarget: (AppDelegate.getDelegate().window!.rootViewController)!)
}
}
}

//来自控制器的呼叫

func getData() {
WebServiceHelper.getWebServiceCall("http://3.16.229.165/webservice/getFollowingList", isShowLoader: false, success: { (responceObj) in

print("success => (responceObj)")
}

, failure: { (failureObj) in
print("failureObj = (failureObj)")
})
}

//API响应数据

{
"status": false,
"followers": false,
"message": "You are not yet following anyone"
}

您错过了success(value)

AF.request(strURL).responseJSON { (resObj) -> Void in 
switch resObj.result {
case .success(let value):
let res = JSON(value)
success(res)
case .failure(let error):
failure(error) 
} 
}