Rozszerzenie UICollectionView do szybkiego dodawania pustej komórki

May 03 2023
Przykładowy kod Swift Kod W powyższym przykładzie, jeśli komórka ma niewłaściwą klasę, podczas debugowania niepowodzenie potwierdzenia spowoduje zatrzymanie aplikacji. Jednak w środowisku produkcyjnym, jeśli komórka ma niewłaściwą klasę, zostanie zwrócona pusta komórka, a aplikacja będzie nadal działać.

Próbka kodu Swift

Kod

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)
        }
    }

W powyższym przykładzie, jeśli komórka ma niewłaściwą klasę, podczas debugowania błąd potwierdzenia spowoduje zatrzymanie aplikacji. Jednak w środowisku produkcyjnym, jeśli komórka ma niewłaściwą klasę, zostanie zwrócona pusta komórka, a aplikacja będzie nadal działać.