我有一个关于如何刷新 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");
}
}
================== 我的实现是否正确?有人知道如何解决吗?