używam następujące metody w moim projekcie
-(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;
}
Potem wystarczy sprawdzić kod błędu i pokazać alert, jeśli znajduje się na liście
if ([[self networkErrorCodes] containsObject:[NSNumber
numberWithInt:[error code]]]){
// Fire Alert View Here
}
I użyj listy od Undocumented NSURLErrorDomain error codes (-1001, -1003 and -1004) using StoreKit
Ale jak widzisz, skomentowałem kody, które moim zdaniem nie pasują do mojej nie ma ŻADNEGO INTERNETU. Np. Kod -1012 (Uwierzytelnienie nie powiodło się.) Możesz edytować listę, jak chcesz.
W moim projekcie używam go pod nazwą użytkownika/hasłem wprowadzanym przez użytkownika.A w moim widoku (fizyczne) błędy połączenia sieciowego mogą być jedynym powodem, aby wyświetlić widok alertów w aplikacji sieciowej. W każdym innym przypadku (np. Niepoprawna nazwa użytkownika/hasło) wolę wykonać niestandardową, przyjazną dla użytkownika animację, LUB po prostu powtórzyć nieudaną próbę ponownie bez żadnej uwagi użytkownika. Zwłaszcza, jeśli użytkownik nie zainicjował jawnie połączenia sieciowego.
Odnosi się do martinezdelariva z pytania, o którym wspomniałem o link do dokumentacji.
https://developer.apple.com/library/ios/#documentation/cocoa/reference/Foundation/Miscellaneous/Foundation_Constants/Reference/reference.html –
NSHipster ma świetny przegląd tych: http://nshipster.com/nserror/ – dlinsin