오류가 발생했음을 나타 내기 위해 nil이 아닌 오류에 의존하지 않겠습니다.
Ben의 대답에 설명 된대로 오류 검사를 사용하고 있지만 일부 상황에서는 오탐/거짓 오류가 발생한다고 생각합니다.
이 SO answer에 따라이 메서드의 결과를 사용하여 성공/실패를 결정합니다. 그런 다음 오류 포인터에서 오류의 세부 사항을 확인하십시오.
NSError *requestError;
NSURLResponse *urlResponse = nil;
NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponse error:&requestError];
/* Return Value
The downloaded data for the URL request. Returns nil if a connection could not be created or if the download fails.
*/
if (response == nil) {
// Check for problems
if (requestError != nil) {
...
}
}
else {
// Data was received.. continue processing
}
이러한 접근 방식은 실패하지 않았다 다운로드 과정에서 발생한 오류에 반응하지 않도록합니다. 다운로드가 진행됨에 따라 프레임 워크 내에서 처리되는 중요하지 않은 오류가 발생할 수 있으며 오류 객체로 오류 포인터를 설정하는 부작용이있을 수 있다고 생각합니다.
예를 들어 URL 연결 처리 과정에서 심화 된 것으로 보이는 응용 프로그램을 다운로드 한 사용자가 POSIX 오류를보고했습니다. ..
requestError.domain = NSPOSIXErrorDomain
requestError.code = 22
[requestError localizedDescription] = Operation could not be completed. Invalid argument
내가 한 모든를 다시
Platform: iPhone
Error ID: (NSPOSIXErrorDomain)[22]
Msg: Operation could not be completed. Invalid argument
매핑 :
이 코드는 오류보고하는 데 사용됩니다 :
NSString *errorIdentifier = [NSString stringWithFormat:@"(%@)[%d]",requestError.domain,requestError.code];
[FlurryAPI logError:errorIdentifier message:[requestError localizedDescription] exception:nil];
을 그리고 오류가보고 나타납니다 오류 코드 22는 EINVAL
이지만 그 이상의 세부 사항은 밝혀지지 않았습니다. 내가 할
다른 오류가 나는 완전히 다양한 네트워크 조건에서 기대하는 NSURL 도메인에서 다음과 같습니다
NSURLErrorTimedOut
NSURLErrorCannotConnectToHost
NSURLErrorNetworkConnectionLost
NSURLErrorNotConnectedToInternet
+others
이 전무에 오류 응답을 초기화 할 수 있는지 확인하십시오, 나는이 대답을 찾아 낼 때까지 나는 EXC_BAD_ACCESS 오류를 얻고 있었다. 감사 +1! – keegan3d
오류를 테스트하기 전에 결과를 테스트해야합니다. 문서에서 * "연결을 만들 수 없거나 다운로드에 실패하면 nil을 반환합니다."* http://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSURLConnection_Class/Reference/Reference .html # // apple_ref/occ/clm/NSURLConnection/sendSynchronousRequest : returningResponse : 오류 : – ohhorob
코코아 [보증] (http://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/ErrorHandlingCocoa/CreateCustomizeNSError/CreateCustomizeNSError .html # // apple_ref/doc/uid/TP40001806-CH204-SW1) 메소드가 실패하면 오류 오브젝트가 유효합니다. 메서드가 성공하면 오류 개체가'nil'이 될 것이라고 보장하지 않습니다. 오류를 사용하기 전에 직접 리턴 값을 확인해야합니다. –