在我的应用程序中,我正在使用UITableView
中的数据提取实现URL
。
一切都很顺利。但问题是来自后端网址的数据太大了。所以我显示UIActivityIndicatorView
,直到数据提取完成。
由于数据量很大,所以需要花费3到4分钟才能获取数据。那么如何使用从url获取的数据尽快更新UITableView
。
我正在使用asynchronousRequest
来执行此操作。
我在cellForRowAtIndexPath
NSString *post = [NSString stringWithFormat:@"skey=%@&user_id=%@",@"XXXXXX",@"3225"];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://chkdin.com/dev/api/peoplearoundmexy/?%@",post]]];
[request setHTTPMethod:@"POST"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:nil];
NSURLSessionTask *task = [[NSURLSession sharedSession] dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
if (data) {
id json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
NSMutableArray *designation=[json valueForKey:@"designation"];
UIImage *imageobj1=[UIImage imageNamed:@"userpic.jpg"];
NSData *imagedata = UIImagePNGRepresentation(imageobj1);
dispatch_async(dispatch_get_main_queue(), ^{
PeopleNearbyCell *updateCell = (id)[collectionview cellForItemAtIndexPath:indexPath];
if (updateCell)
cell.UserProfilePic.image = [UIImage imageWithData:imagedata];
});
}
}];
[task resume];
但它不起作用。我怎样才能做到这一点?
答案 0 :(得分:0)
网络请求是异步处理,cellforrowatindexpath是在主线程中,如果需要刷新网络请求中的表,则需要编写网络请求方法,然后获取数据,其中赋值方法,然后刷新表。