iOS使用嵌套请求加载表数据

时间:2018-10-04 08:54:44

标签: ios swift uitableview http alamofire

我正在使用UITableView,其中包含图像和一些标签。 文本是从一台服务器加载的,图像是从另一台服务器下载的。图像URL取决于文本值响应,但我必须在一个单元格中显示它们。我要做的是将这些数据加载后进行合并,然后再进行显示。

什么是正确的方法?

2 个答案:

答案 0 :(得分:2)

您可以使用DispatchGroup组合两个请求的响应:

let group = DispatchGroup()
var text: String?
var image: UIImage?

group.enter()
requestText(completion: { response in
    text = // extract text from response
    group.leave()
})

group.enter()
requestImage(completion: { response in
    image = // extract image from response
    group.leave()
})

group.notify(queue: DispatchQueue.main, execute: {
    let textWithImage = (text, image)
    // show data in table view
})

答案 1 :(得分:2)

您可以简单地首先显示文本数据,而不是在下载图像后立即显示,就可以通过在响应中都具有一些公共ID并将该图像映射到文本数据并重新加载该特定单元格。这样,用户将能够看到文本数据,并且在几毫秒后图像也将很好地显示出来。