我目前正在從外部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中。當我沒有連接的情況下運行應用程序時,我希望看到我的錯誤消息。然而,我所得到的只是「操作無法完成(可可錯誤256)」,從我可以收集的是一個通用的讀取錯誤。
起初我以爲它可能只是TouchXML的方法,但正如您所看到的,我將其更改爲NSString的initWithCOntentsOfURL。
任何人都可以在這個問題上得到任何解釋嗎?
感謝,
豐富
P.S。; 'initWithContentsOfURL:'是一種同步方法 - 因此將其封裝在NSOperation/GCD塊中,或切換到異步網絡。 – 2012-01-30 04:35:45