リモート Web サイトにアクセスしてNSURLConnection
コードを実行し、XML ファイルを保存するアプリがあります。次に、これらの XML ファイルにアクセスし、それらを解析して情報を取得します。ユーザー インターフェイスが適切に更新されないことを除けば、プロセスは正常に機能します。を通じてユーザーを最新の状態に保ちたいですUILabel
。を使用してテキストを更新しようとしていますsetBottomBarToUpdating:
。「Processing Please Wait...」に設定すると、初めて機能します。ただし、connectionDidFinishLoading:
更新されません。NSURLConnection が別のスレッドで実行されておりdispatch_get_main_queue
、メイン スレッドでの更新の試みが機能していないと考えています。これを解決するためにコードを変更するにはどうすればよいですか? ありがとう![より多くの情報/コードを含める必要がある場合は、お知らせください!]
myFile.m
NSLog(@"Refreshing...");
dispatch_sync( dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[self getResponse:@"http://mylocation/path/to/file.aspx"];
});
[self setBottomBarToUpdating:@"Processing Please Wait..."];
queue = dispatch_queue_create("updateQueue", DISPATCH_QUEUE_CONCURRENT);
connectionDidFinishLoading:
if ([response rangeOfString:@"Complete"].location == NSNotFound]) {
// failed
} else {
//success
dispatch_async(dispatch_get_main_queue(),^ {
[self setBottomBarToUpdating:@"Updating Contacts..."];
});
[self updateFromXMLFile:@"http://thislocation.com/path/to/file.xml"];
dispatch_async(dispatch_get_main_queue(),^ {
[self setBottomBarToUpdating:@"Updating Emails..."];
});
[self updateFromXMLFile:@"http://thislocation.com/path/to/file2.xml"];
}