Handle No Internet Connection Error Before Try to Parse the Result in Alamofire
I agree with @Shripada. First you should use Reachability to check for connectivity. There is a Swift library here: https://github.com/ashleymills/Reachability.swift
additionally you can use one of the Alamofire validation methods:
Alamofire.request(.POST, REGISTER_URL, parameters: parameters, encoding: .JSON, headers: getAuthenticationHeader()).validate(statusCode: 200 ..< 300).response { (request, response, data, error) -> Void in
if error != nil {
println("Server responded with: \(response.statusCode)")
return
}
// Handle your response data here
}
This works for me in Swift2.x
Alamofire.request(.POST, url).responseJSON { response in
switch response.result {
case .Success(let json):
// internet works.
case .Failure(let error):
if let err = error as? NSURLError where err == .NotConnectedToInternet {
// no internet connection
} else {
// other failures
}
}
}
Swift 3 Solution
Assuming you have an Error
instance you can do the following:
if let err = error as? URLError, err.code == URLError.Code.notConnectedToInternet
{
// No internet
}
else
{
// Other errors
}
You simply cast error
into a URLError
. This works since URLError
implements the Error
protocol. Here is a quote from the apple documentation for reference:
URLError: Describes errors in the URL error domain.
Once you have a URLError
instance you can simply compare its code
property, which is a URLError.Code
enum, against the any relevant enum cases (in our example URLError.Code.notConnectedToInternet
).