我正在尝试将某种错误处理合并到 iOS 应用程序中。在阅读了 try/catch 块并不是很好的做法之后,我现在正在查看 NSURLConnection 的 &error 输出参数。我试图传递对 NSError 的引用,然后我继续通过链向下传递它。
第一个函数调用我的 DAL 中的一个方法:
NSError *error = nil;
SearchResult *res = [db getHereditaments:&error];
if (error) {
[self performSelectorOnMainThread:@selector(DisplayError:) withObject:error waitUntilDone:NO];
//todo: handle error
} else {
[self performSelectorOnMainThread:@selector(DisplayResults:) withObject:res waitUntilDone:NO];
}
然后第二种方法(称为)尝试传递错误。这工作正常,直到我添加了对 NSError 是否为 nil 的检查,并且在这种情况下返回了数据,那么为什么还会返回错误呢?
调用的方法是:
-(SearchResult *) getData:(NSError**)error {
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
NSString *userName = [prefs stringForKey:UsernameKey];
NSString * password = [prefs stringForKey:PasswordKey];
NSURL *url = [UrlUtility getSearchResults:userName passwordHash:password];
CXMLDocument *responseObj = [UrlUtility xmlDocWithUrl:url onError:&error];
if(error ==nil){// should be nil if the connection was successful shouldn't it?