Я хочу создать свой собственный класс сетевого менеджера, чтобы можно было обрабатывать ошибки глобально, например, при отсутствии Интернета, тогда я мог бы показывать всплывающие окна только из этого класса. Я использую для этого Alamofire, а также хочу проанализировать данные в формате JSON с помощью библиотеки SwiftJSON. Я попробовал использовать свой код, но не смог передать данные из моего сетевого класса туда, где вызывается функция.
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.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"
}
Подробнее здесь: https://stackoverflow.com/questions/673 ... -alamofire