ある種のエラー処理を 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];
}
次に、2 番目のメソッド (呼び出される) がエラーを伝えようとします。これは、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?