使用来自url的数据更新UiTableview

时间:2016-12-04 08:38:24

标签: ios objective-c iphone xcode uitableview

在我的应用程序中,我正在使用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]; 

但它不起作用。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

网络请求是异步处理,cellforrowatindexpath是在主线程中,如果需要刷新网络请求中的表,则需要编写网络请求方法,然后获取数据,其中赋值方法,然后刷新表。