How should I handle if there is an error occurs when there is no internet connection in Alamofire. I tried checking if data is nil or not but it does not work.
Below is how I use Alamofire
Alamofire.request(.POST, REGISTER_URL, parameters: parameters, encoding: .JSON, headers: getAuthenticationHeader()).response { (request, response, data, errorType) -> Void in
let resultObject: APIResults = APIResults(JSONDecoder(data!));
let responseCode: Int = Int(resultObject.code!)!;// THIS CRASHES WHEN THERE IS NO INTERNET CONNECTION
if (responseCode == 200) {
available = true;
}
finished = true;
}
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
).