현재 외부 API에서 일부 XML을 읽는 중입니다. initWithContentsOfURL의 이상한 오류
다음 코드
잘 작동합니다 :NSError *error = nil;
NSString *xmlString = [[NSString alloc] initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:&error];
그러나, 내가 처리 일부 오류 ("서버에 연결할 수 없습니다", "인터넷 연결"등)을 추가하고 싶었다. 그래서, 나는 도달 가능성의 샘플 코드의 도움으로 장소에 블록을 넣어 :
이if ([error code] == kCFURLErrorNotConnectedToInternet) {
NSDictionary *userInfo = [NSDictionary dictionaryWithObject:NSLocalizedString(@"No Internet connection",@"Error message displayed when not connected to the Internet.") forKey:NSLocalizedDescriptionKey];
NSError *noConnectionError = [NSError errorWithDomain:NSCocoaErrorDomain code:kCFURLErrorNotConnectedToInternet userInfo:userInfo];
[self handleError:noConnectionError];
} else {
// otherwise handle the error generically
[self handleError:error];
}
는 handleError 방법은 단순히 오류의 세부 사항과 함께 UIAlertView를 표시합니다. 연결이없는 앱을 실행하면 오류 메시지가 표시 될 것으로 예상됩니다. 그러나 내가 얻은 것은 "작업을 완료 할 수 없습니다 (Cocoa error 256)"입니다. 내가 수집 할 수있는 것은 일반적인 읽기 오류입니다.
처음에는 TouchXML의 메소드일지도 모르겠지만, 알다시피 NSString의 initWithCOntentsOfURL로 변경했습니다.
누구든지이 문제에 관해 밝힐 수 있습니까?
감사합니다,
리치
P.S 있는지 확인 통과; 'initWithContentsOfURL :'은 동기 방식입니다. 따라서 NSOperation/GCD 블록에 포장하거나 비동기 네트워킹으로 전환하십시오. –