utilizo el siguiente método en mi proyecto
-(NSArray*)networkErrorCodes
{
static NSArray *codesArray;
if (![codesArray count]){
@synchronized(self){
const int codes[] = {
//kCFURLErrorUnknown, //-998
//kCFURLErrorCancelled, //-999
//kCFURLErrorBadURL, //-1000
//kCFURLErrorTimedOut, //-1001
//kCFURLErrorUnsupportedURL, //-1002
//kCFURLErrorCannotFindHost, //-1003
kCFURLErrorCannotConnectToHost, //-1004
kCFURLErrorNetworkConnectionLost, //-1005
kCFURLErrorDNSLookupFailed, //-1006
//kCFURLErrorHTTPTooManyRedirects, //-1007
kCFURLErrorResourceUnavailable, //-1008
kCFURLErrorNotConnectedToInternet, //-1009
//kCFURLErrorRedirectToNonExistentLocation, //-1010
kCFURLErrorBadServerResponse, //-1011
//kCFURLErrorUserCancelledAuthentication, //-1012
//kCFURLErrorUserAuthenticationRequired, //-1013
//kCFURLErrorZeroByteResource, //-1014
//kCFURLErrorCannotDecodeRawData, //-1015
//kCFURLErrorCannotDecodeContentData, //-1016
//kCFURLErrorCannotParseResponse, //-1017
kCFURLErrorInternationalRoamingOff, //-1018
kCFURLErrorCallIsActive, //-1019
//kCFURLErrorDataNotAllowed, //-1020
//kCFURLErrorRequestBodyStreamExhausted, //-1021
kCFURLErrorFileDoesNotExist, //-1100
//kCFURLErrorFileIsDirectory, //-1101
kCFURLErrorNoPermissionsToReadFile, //-1102
//kCFURLErrorDataLengthExceedsMaximum, //-1103
};
int size = sizeof(codes)/sizeof(int);
NSMutableArray *array = [[NSMutableArray alloc] init];
for (int i=0;i<size;++i){
[array addObject:[NSNumber numberWithInt:codes[i]]];
}
codesArray = [array copy];
}
}
return codesArray;
}
Entonces sólo comprobar el código de error y mostrar alerta si está en la lista
if ([[self networkErrorCodes] containsObject:[NSNumber
numberWithInt:[error code]]]){
// Fire Alert View Here
}
I use la lista de Undocumented NSURLErrorDomain error codes (-1001, -1003 and -1004) using StoreKit
Pero como pueden ver, comenté códigos que creo que no se ajustan a mi definición inición de NO INTERNET. Por ejemplo, el código de -1012 (Autenticación fallida) Puede editar la lista como desee.
En mi proyecto lo uso en el nombre de usuario/contraseña que ingresa del usuario.Y en mi opinión (física), los errores de conexión a la red pueden ser la única razón para mostrar una vista de alerta en su aplicación basada en la red. En cualquier otro caso (por ejemplo, un par de nombre de usuario/contraseña incorrectos) prefiero hacer alguna animación personalizada fácil de usar, O simplemente repetir el intento fallido nuevamente sin ninguna atención del usuario. Especialmente si el usuario no inició explícitamente una llamada de red.
Saludos a martinezdelariva de la pregunta que mencioné para un enlace a la documentación.
https://developer.apple.com/library/ios/#documentation/cocoa/reference/Foundation/Miscellaneous/Foundation_Constants/Reference/reference.html –
NSHipster tiene una excelente descripción de aquellos: http://nshipster.com/nserror/ – dlinsin