我是iOS的初学者和客观的C编程,我遇到了一个我无法解决的问题,因为我不知道从哪里开始,以及该怎么做。这是上下文:我有一个侧边栏菜单(比如facebook的一个),当你选择这个侧边栏菜单的一个类别时,我会显示一个UITableView,其中包含一个图像列表和一些文本,图像列表和文本来自带有JSON提要的互联网。我的应用程序目前工作正常,但每次更改类别时,都会冻结从Internet加载JSON数据的时间。以下是我的TableViewController.m的代码示例:
- (void)viewDidLoad {
[super viewDidLoad];
[self refreshTable];
}
-(void)refreshTable {
// Send a synchronous request
NSURLRequest * urlRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:URLValue]];
NSURLResponse * response = nil;
NSError * error = nil;
NSData * data = [NSURLConnection sendSynchronousRequest:urlRequest
returningResponse:&response
error:&error];
if (error == nil)
{
// Parse JSON data
}
}
由于我是初学者,所以我非常感谢我们要采取的一些解释。我发现了一些类似的问题,他们谈论委托,委托是什么以及如何称呼它?
非常感谢你们花时间阅读我的问题。
答案 0 :(得分:1)
您想使用:
[NSURLConnection sendAsynchronousRequest:urlRequest queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
// parsing code goes here
// update table view
[self.tableView reloadData];
}
将解析代码移动到完成块中。有关详细信息,请参阅:https://developer.apple.com/library/Mac/documentation/Cocoa/Reference/Foundation/Classes/NSURLConnection_Class/Reference/Reference.html#//apple_ref/occ/clm/NSURLConnection/sendAsynchronousRequest:queue:completionHandler :.
在解析结束时,您可以调用[self.tableView reloadData]
进行刷新。