Я изо всех сил пытаюсь разгадать ошибку EXEC_BAD_ACCESS, которую я получаю. Код выглядит следующим образом:EXEC_BAD_ACCESS заполняет содержимое ячейки в dispatch_async
// Update the cell
dispatch_async(dispatch_get_main_queue(), {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier("customCell", forIndexPath: indexPath) as! CustomCollectionViewCell // crash here
cell.image.image = image
if(collectionView.numberOfItemsInSection(0) > indexPath.row) {
self.collectionView.reloadData()
}
})
код предназначен для асинхронного заполнения изображения в collectionViewCell после получения ответа от NSURLSession.dataTaskWithRequest.
Крушение происходит на линии let cell =
, потому что (я считаю) indexPath больше не существует (потому что я изменил содержимое в коллекцииView). Я не уверен, как это проверить.
Я думал, что что-то вроде линий if let cell =
будет работать, но я думаю, что неправильно понял, как это работает. И, читая другие сообщения, я вижу, что вы не можете поместить код в блок try/catch.
Любые идеи? Спасибо заранее!
Вы делаете это в 'cellForRow ...'? вы должны сделать это там – tbilopavlovic
Да - это лишь небольшая часть этого. Идея состоит в том, что строки будут отображаться, а затем изображения в них будут асинхронно заполняться, так что прокрутка и т. Д. Будет гладкой. – Ben
ОК, но почему вы делаете это внутри: 'let cell = ....'? – tbilopavlovic