私は何らかのエラー処理をiOSアプリケーションに取り入れようとしています。私がNSURLConnectionのエラー出力パラメータ&を見ています。私は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?
'nil'をテストすると何が動作しませんか? –
プログラムの流れは私にとって本当にはっきりしませんが、なぜエラーポインターを2番目の関数に渡そうとしたのでしょうか?エラーが発生した場合は、エラー変数で2番目の関数を呼び出す際のポイントがありますか?これとは別に、返されるオブジェクトがnilであるかどうかをチェックする必要があります。エラーが発生した場合はエラーが発生し、その時点でエラー変数をチェックする必要があります。最初にresponseObjがnilであるかどうかを確認し、そうであればエラー変数をチェックすることができます。 ** P.S。:**あなたは '+ xmlDocWithUrl:onError:'のコードを表示できますか?問題の原因はこのメソッドにある可能性があります。 –