当用户搜索时,我从一个来源获取一些数据,并根据我收到的内容,我正在使用其他来源获取相关图像。这是异步发生的。一个搜索结果有一个特定的图像(通常我得到4-6个结果,我需要获取图像)。 事实上,图像与错误的结果数据相关联,主要是因为它发生异步并且我的代码处理不好。
看看这里
搜索结果给出了5个结果
在collectionView:cellForRowAtIndexPath中,我为每个结果获取一个图像,并将其添加到单元格的imageView中。
有时图像可能会放错位置
我相信我可以将图像添加到结果数组中,但我需要一种方法将图像和正确的结果数据链接在一起。
人们通常做什么?
编辑: 执行asynchrequest获取图像。
func willReturnBookCoverFromNB(url: String, completionHandler: (imageD: NSData?, error: NSError?)-> ()){
let safeurl = url.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())
let task = Alamofire.request(.GET, safeurl!).response { (request, response, data, error) in
print(request)
print(response)
if(error != nil){
completionHandler(imageD: nil, error: error)
return
}else{
completionHandler(imageD: data, error: nil)
return
}
}
task.resume()
}
在collectionView:cellforRowAtIndex
中bookImage.willReturnBookCoverFromNB(baseUrl, completionHandler: { (imageD, error) in
if error == nil{
//There is no error. Must be a image then..
let imageData = UIImage(data: imageD!)
cell.bookCover.image = imageData
}else{
let alert = displayAlert("Error!", text: "\(error!)")
self.presentViewController(alert, animated: true, completion: nil)
}
})
每次用户在searchField中输入时,collectionView和搜索结果数据都会重新加载。