Ich kämpfe um einen EXEC_BAD_ACCESS Fehler, den ich bekomme. Der Code lautet wie folgt:EXEC_BAD_ACCESS Zellinhalte in dispatch_async auffüllen
// 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()
}
})
Der Code asynchron in einem Bild ausgebildet ist, in einem collectionViewCell zu füllen, nachdem eine Antwort von einem NSURLSession.dataTaskWithRequest empfing.
Der Absturz passiert auf der let cell =
Zeile, weil (glaube ich) der IndexPath nicht mehr existiert (weil ich den Inhalt auf der CollectionView geändert habe). Ich bin mir nicht sicher, wie ich das überprüfen soll.
Ich dachte etwas in der Richtung von if let cell =
würde funktionieren, aber ich denke, ich hätte missverstanden, wie das funktioniert. Und wenn ich andere Beiträge lese, kann ich sehen, dass Sie den Code auch nicht in einen try/catch-Block setzen können.
Irgendwelche Ideen? Vielen Dank im Voraus!
Machst du das in 'cellForRow ...'? Sie sollten das tun – tbilopavlovic
Ja - das ist nur ein kleiner Teil davon. Die Idee ist, dass die Zeilen angezeigt werden, und dann werden die darin enthaltenen Bilder asynchron ausgefüllt, so dass Scrollen usw. glatt ist. – Ben
ok, aber warum machst du das drinnen: 'let cell = ....'? – tbilopavlovic