Ios 从api获取gif图像并在tableview中显示所有内容

Ios 从api获取gif图像并在tableview中显示所有内容,ios,swift,Ios,Swift,如果有人有很好的想法来实现这一点,让我知道 非常感谢 class ViewController: UIViewController,UITableViewDataSource,UITableViewDelegate { @IBOutlet weak var tableView: UITableView! @IBOutlet weak var tableViewCell: UITableViewCell! @IBOutlet weak var imageView: UII

如果有人有很好的想法来实现这一点,让我知道 非常感谢

class ViewController: UIViewController,UITableViewDataSource,UITableViewDelegate {
    @IBOutlet weak var tableView: UITableView!

    @IBOutlet weak var tableViewCell: UITableViewCell!
    @IBOutlet weak var imageView: UIImageView!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

        let cell = tableView.dequeueReusableCell(withIdentifier: "trendingCell", for: indexPath)

        print(self.array[indexPath.row])

        cell.textLabel?.text = (self.array[indexPath.row]["title"] as! String)

        cell.detailTextLabel?.text = (self.array[indexPath.row]["username"] as! String)

        Alamofire.request(imageUrl!, method: .get).response { response in
            guard let image = UIImage(data:response.data!) else {
                // Handle error
                return
            }
            let imageData = UIImageJPEGRepresentation(image,1.0)
            cell.myImage.image = UIImage(data : imageData!)
        }

        return cell
    }
}

您正在强制展开某些值。请尝试安全地展开这些值。但是,您仍然需要弄清楚为什么值为零

dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), {

       if let url = NSURL(string: self.restaurants[indexPath.row].restaurantImage), let data = NSData(contentsOfURL: url), let image =  UIImage(data: data) {

            dispatch_async(dispatch_get_main_queue()) { () -> Void in
                    cell.restaurantImage.image = image
            }
        }
    })

这将帮助您找出确切的问题所在

        dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), {

        guard indexPath.row < self.restaurants.count
        else
        {
            print("Indexpath greater than restaurants count")
            return
        }

        guard let imageUrl =  NSURL(string:self.restaurants[indexPath.row].restaurantImage)
        else
        {
            print("Image url is empty")
            return
        }

        guard let imageData = NSData(contentsOfURL: imageUrl)
        else
        {
            print("Cannot retreive data at url")
            return
        }

        guard let image = UIImage(data: imageData)
        else
        {
            print("Data doesnt contain image")
            return
        }

        dispatch_async(dispatch_get_main_queue()) { () -> Void in
            cell.restaurantImage.image = image
        }
    })
dispatch\u async(dispatch\u get\u global\u queue(dispatch\u queue\u PRIORITY\u DEFAULT,0){
guard.rowVoid in
cell.restaurantImage.image=图像
}
})
可能重复的两次强制展开(使用“!”)。检查是哪一个导致了碰撞。使用if let/防护罩let软展开。