web-dev-qa-db-fra.com

échec de l'obtention d'images en sortie, état 8196

Lorsque j'essaie de personnaliser une cellule tableView, j'ai trouvé cette erreur.

"Echec de l'obtention des images de sortie, état 8196"

Je ne sais absolument pas que c'est l'erreur du royaume ou de ma cellule de personnalisation de la table de visualisation.

class StudentTableViewController: UITableViewController {

    let realm = try! Realm()
    var student: Results<StudentName>?
    var selectedClass: ClassName? {
        didSet {
            load()
        }
    }
    var selected: String = ""

    override func viewDidLoad() {
        super.viewDidLoad()
        navigationController?.title = selected
        tableView.register(StudentTableViewCell.self, forCellReuseIdentifier: "studentName")
    }

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return student?.count ?? 1
    }

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "studentName", for: indexPath) as! StudentTableViewCell
        cell.name.text = student?[indexPath.row].name ?? "There are no student in this class"
        cell.number.text = "\(student?[indexPath.row].studentNumber ?? 0)"
        return cell
    }
    func load() {
        student = selectedClass?.studentNames.sorted(byKeyPath: "studentNumber", ascending: true)
        tableView.reloadData()
    }
}

Je pense que cela a fonctionné lorsque j'utilise Xcode 9 et Swift 4.1, mais maintenant, dans Xcode 10, cela ne fonctionne pas car il ne montre que cette erreur et toute la page blanche de la vue tableau.

3
Matthew Lin

Si vous utilisez un storyboard, vous ne devez pas appeler tableView.register, vous devez simplement définir la reuseIdentifier pour votre cellule prototype dans le storyboard.

1
Dávid Pásztor

Si vous avez un fichier .xib distinct pour la cellule, vous devez utiliser: 

tableView.register(nib: UINib?, forCellReuseIdentifier: String)

En d'autres termes, l'enregistrement de votre cellule ressemblerait à quelque chose comme ça: 

self.tableView.register(UINib(nibName: "your cell nib name", bundle: nil), forCellReuseIdentifier: "your cell identifier")

Si vous avez placé votre cellule dans la table dans le contrôleur situé dans le Storyboard, vous n'avez pas besoin d'enregistrer votre cellule. Comme l'a mentionné @ Dávid Pásztor, assurez-vous d'ajouter l'identifiant de la cellule à la cellule du Storyboard 

0
stan