кэширование изображений в UITableViewCells с помощью AlamofireImages в моем приложении Swift

Я пишу приложение Swift, которое отображает фотографии, полученные с сервера, в каждой ячейке моего UITableViewController.

Пока мой код выглядит следующим образом:

func tableView(detailsPanel: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    let cell = detailsPanel.dequeueReusableCellWithIdentifier("cell") as! DetailsCell

    let test:SingleTest =  self.items[indexPath.row] as! SingleTest
    if(test.photo != "") {
        cell.myPhoto.af_setImageWithURL(NSURL(string: test.photo)!)
    }

}

Теперь проблема в том, что не в каждой ячейке хранится фотография в cell.photo. Некоторые из них являются пустыми строками (""). В той ситуации, когда я быстро прокручиваю табличное представление, я вижу, что эти пустые UIImageView заполнены фотографиями из других ячеек.

Быстрое исправление для этого, кажется, добавляет блок else:

if(test.photo != "") {
    cell.myPhoto.af_setImageWithURL(NSURL(string: test.photo)!)
} //this one below:
else {
    cell.myPhoto.image = UIImage(named: "placeholderImg")
}

Теперь при отсутствии фотографии там будет отображаться placeHolderImg. Но... есть ли способ избежать этого и просто ничего там не отображать? И под ничего не отображать я имею в виду не отображать изображения из разных ячеек?


person user3766930    schedule 21.09.2016    source источник


Ответы (1)


Вы повторно используете свои ячейки, поэтому ячейка по-прежнему будет использовать предыдущее изображение, которое она загрузила, если вы не установите для него значение nil или изображение-заполнитель. Однако я считаю, что вам не нужно использовать оператор if. Вы можете использовать параметр placeholderImage для af_setImageWithURL.

cell.myPhoto.af_setImageWithURL(NSURL(string: test.photo)!, placeholderImage: image)
person koropok    schedule 21.09.2016
comment
можете ли вы сказать мне, как я могу установить его на ноль? Я попытался написать в операторе else: cell.myPhoto = nil, но затем, когда я прокручиваю список, я получаю сообщение об ошибке fatal error: unexpectedly found nil while unwrapping an Optional value - person user3766930; 21.09.2016