Webサーバーからデータを取得するiosアプリケーションを開発しています。このクラスのハンドラーの 1 つが呼び出されて完了するまで、他のすべてを待機させたいと思います。ディスパッチ/スレッドを使用して可能であることは知っていますが、方法がわかりません。
-(void)callWebService:(NSString*)URL:(NSString*)SOAP{
NSURL *url = [NSURL URLWithString:URL];
NSMutableURLRequest *req = [NSMutableURLRequest requestWithURL:url];
[req setHTTPMethod:@"POST"];
[req setHTTPBody:[SOAP dataUsingEncoding:NSUTF8StringEncoding]];
NSURLConnection *con = [[NSURLConnection alloc] initWithRequest:req delegate:self];
if(con){
[con start];
}
}
このメソッドの最後で、このクラスの外側のコードが続きます。しかし、このハンドラーが呼び出される (そして完了する) まで待ちたい:
-(void)connection:(NSURLConnection *)c didReceiveData:(NSData *)data{
NSString *res = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"%@",res);
Ukol_Parser *parser = [Ukol_Parser alloc];
[parser parseUkol:res];
}
ここのパーサーはデータを sqlite db に入れ、このクラスの外側でデータを読み取っているためです。しかし、「外部」コードは、応答を取得してハンドラーが呼び出されるよりも速く実行されています....