Я захватываю свои изображения с моего сервера, захватывая URL-адрес из своей базы данных и отображая его внутри моей собственной ячейки таблицы.
Я использую расширение для преобразования URL в изображения. Как вы можете видеть, он извлекает изображения асинхронно, но не показывает изображение. Я проверил, что URL-адрес действителен, но он не отображает
После того, как я извлек свои данные с помощью NSJSONSerialization, я сделал
dispatch_async(dispatch_get_main_queue(), {
self.tableView.reloadData()
})
Вот как я называю это в своем cellForRowAtIndexPath
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell:LatestPostCustomTableViewCell = tableView.dequeueReusableCellWithIdentifier("LatestPostCustomTableViewCell", forIndexPath: indexPath) as! LatestPostCustomTableViewCell
cell.imagePost.downloadedFrom(link: latestPost[indexPath.row].imageURL, contentMode: .ScaleAspectFit)
return cell
}
}
Расширение, которое я использую, извлечено из Загрузка/Загрузка изображения с URL-адреса в Swift
extension UIImageView {
func downloadedFrom(link link:String, contentMode mode: UIViewContentMode) {
guard
let url = NSURL(string: link)
else {return}
contentMode = mode
NSURLSession.sharedSession().dataTaskWithURL(url, completionHandler: { (data, response, error) -> Void in
guard
let httpURLResponse = response as? NSHTTPURLResponse where httpURLResponse.statusCode == 200,
let mimeType = response?.MIMEType where mimeType.hasPrefix("image"),
let data = data where error == nil,
let image = UIImage(data: data)
else { return }
dispatch_async(dispatch_get_main_queue()) { () -> Void in
self.image = image
}
}).resume()
}
}