Uma extensão UICollectionView para adicionar uma célula em branco rapidamente

May 03 2023
Exemplo de código Swift Código No exemplo acima, se a célula for da classe errada, durante a depuração, uma falha de asserção interromperá o aplicativo. Porém, em Produção, se a célula estiver com a classe errada, uma célula em branco será retornada e o aplicativo continuará rodando.

Exemplo de código Swift

Código

final class FallbackBlankCollectionViewCell: UICollectionViewCell {}

extension UICollectionView {
    func blankCell(forIndexPath: IndexPath) -> UICollectionViewCell {
        register(FallbackBlankCollectionViewCell.self, forCellWithReuseIdentifier: "FallbackBlankCollectionViewCell")
        return dequeueReusableCell(withReuseIdentifier: "FallbackBlankCollectionViewCell", for: forIndexPath)
    }
}

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        if let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "LobbyCell", for: indexPath) as? LobbyCell {
            return cell
        } else {
            assertionFailure()
            return collectionView.blankCell(forIndexPath: indexPath)
        }
    }

No exemplo acima, se a célula for da classe errada, ao depurar, uma falha de asserção interromperá o aplicativo. Porém, em Produção, se a célula estiver com a classe errada, será retornada uma célula em branco e o aplicativo continuará rodando.