网络连接因Alamofire丢失

时间:2019-01-07 06:19:12

标签: ios swift alamofire

我在项目中多次遇到此错误,这使我非常恼火,因为尽管反复出现此错误,但我具有完整的Internet连接。

enter image description here

什么解决方案...?

我正在使用

  

Swift-3.3

     

Alamofire-4.7.3

API调用代码:

class  func post(_ URL: String, withParams params: [String : AnyObject], onView parentView: UIViewController, hnadler completion: @escaping ([AnyHashable: Any]!) -> Void) {
        var URLString  = String()
        URLString = APIConstants.kServerURL + URL
        var headers = [String: String]()
        headers["Content-Type"] = "application/x-www-form-urlencoded"

        Alamofire.request(URLString,method: .post, parameters: params , headers : headers)
            .validate(contentType: ["application/vnd.api+json"])
            .responseJSON { response in
                switch response.result {
                case .success( _):
                    var completionVarible = [NSObject : AnyObject]()
                    completionVarible = response.result.value as! [AnyHashable: Any]! as [NSObject : AnyObject]
                    completion(completionVarible)
                case .failure(let error):
                    self.handleFailureResponse(Error: error as NSError?, parentView: parentView)
                }
        }
    }

3 个答案:

答案 0 :(得分:1)

如果立即出现警报,则可以尝试将缓存策略更改为  .reloadIgnoringCacheData

答案 1 :(得分:0)

我不知道为什么会发生此错误,但我也遇到了此错误,因此我提出了一个解决方案。该错误具有一些唯一的错误代码。因此,请检查该错误代码,并忽略那里的警报,否则,如果收到此错误代码,则可以再次尝试此API调用。

答案 2 :(得分:0)

如果您使用Alamofire,我会找到一种解决此问题的方法。

首先在您的普通班级中导入Alamofire,否则您可以创建一个单独的班级来检查Internet连接。

  

导入Alamofire

class Connectivity {
    class func isConnectedToInternet() ->Bool {
        return NetworkReachabilityManager()!.isReachable
    }
}

在调用API之前先调用以下方法

if !Connectivity.isConnectedToInternet() {
            ServiceHandler.ShowAlert(message: "Check your internet connectivity.", title: "Error", parentView: self) //This is my comman method for display alert.
            return
        }