使用后台获取在 UITableView 单元格中显示帖子

Show posts in UITableView Cell With Background fetch

我正在创建一个应用程序,我必须在其中显示包含照片和文本的用户帖子。我想要一种更好的方法来像 Facebook 那样在后台获取更新的帖子?滚动到顶部后,我想显示较新的帖子。

cellForRowAtIndexPath: 中安排图像和帖子在每个单元格的单独线程上下载,并在下载图像和帖子时用接收到的数据更新相应的单元格。

用于下载图片和帖子您可以使用延迟加载,也可以使用 GCD API 异步下载您的资源,因为-

// sample usage of GCD API
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"];
    }

    cell.imageView.image = nil; // or cell.imageView.image = [UIImage imageNamed:@"placeholder.png"];

    dispatch_async(kBgQueue, ^{
        // download the image asynchronously as
        NSData *imgData = [NSData dataWithContentsOfURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://imageurl.com/%@.jpg",[[modal objectAtIndex:indexPath.row] objectForKey:@"imageId"]]]];
        if (imgData) {
            UIImage *image = [UIImage imageWithData:imgData];
            if (image) {
                // when the image is downloaded set it as
                dispatch_async(dispatch_get_main_queue(), ^{
                    UITableViewCell *updateCell = (id)[tableView cellForRowAtIndexPath:indexPath];
                    if (updateCell)
                        updateCell.imageView.image = image;
                });
            }
        }
    });
    return cell;
}

注意:这是一个粗略的想法,您需要根据需要使用/实施相同的方法。