iOS アプリの UI を更新する方法に問題があります。私が達成したかったのはこれです:
- Web サービスから取得したデータに基づいて UITableView にデータを表示する
- Web サービスは別のスレッド (メイン スレッドではない) から呼び出す必要があります。
- データが取得された後、取得されたデータで UITableView の内容が更新されます
- これは、ネットワーク接続が悪い状態で Web サービスからデータを受信しているときに、UI がハングしたり、アプリがユーザー入力をブロックしたりしないようにするためです。
そのために、次のソース コードを作成します。
- (void)viewDidLoad
{
[super viewDidLoad];
NSURL *myURL = [[NSURL alloc] initWithString:[Constant webserviceURL]];
NSURLRequest *request = [NSURLRequest requestWithURL:myURL cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:60];
[[NSURLConnection alloc] initWithRequest:request delegate:self];
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
NSXMLParser *parser = [[NSXMLParser alloc] initWithData:data];
[self myparser] = [[MyXMLParser alloc] initXMLParser];
[parser setDelegate:myparser];
BOOL success = [parser parse];
if (success) {
// show XML data to UITableView
[_tableView performSelectorOnMainThread:@selector(reloadData) withObject:[myparser xmldata] waitUntilDone:NO];
}
else {
NSLog(@"Error parsing XML from web service");
}
}
================== 私の実装は正しいですか? 誰もそれを解決する方法を知っていますか?