web-dev-qa-db-fra.com

Erreur Xcode: impossible de retirer de la file d'attente une cellule avec l'identificateur MealTableViewCell

J'ai suivi le tutoriel Apple ici et j'ai rencontré une erreur:

2016-01-12 09:34:32.909 FoodTracker[1812:124509] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'unable to dequeue a cell with identifier MealTableViewCell - must register a nib or a class for the identifier or connect a prototype cell in a storyboard'

L'erreur apparaît lorsque le programme est exécuté et la ligne en surbrillance rouge apparaît sur la ligne de classe d'AppDelegate.Swift

Ce sont les lignes de code qui, à mon avis, sont à l'origine de l'erreur, comme je l'ai découvert via des points d'arrêt:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cellIdentifier = "MealTableViewCell"
    let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as! MealTableViewCell

    // Configure the cell...
    let meal = meals[indexPath.row]

    cell.nameLabel.text = meal.name
    cell.photoImageView.image = meal.photo
    cell.ratingControl.rating = meal.rating


    return cell

}

J'ai regardé en ligne, et beaucoup de réponses ont été données pour s'assurer que la TableCell a un identifiant, mais le mien le fait et l'erreur persiste.

S'il vous plaît laissez-moi savoir si je dois poster plus d'infos.

Merci d'avance

17
demar

Cela fonctionne pour moi ..

 my Scene

 Attributes inspector

et j'utilise un identifiant différent, "DeviceDetailsCell"

let cellIdentifier = "DeviceDetailsCell"
    let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as! DeviceDetailsTableViewCell
29
Jan

Pour mémoire, voici comment j'ai résolu mon problème:

J'ai pris l'identifiant actuel qui se trouvait dans l'inspecteur d'attributs, je l'ai supprimé, puis j'ai appuyé sur Entrée et cliqué. Après cela, j'ai cliqué de nouveau dans la zone de texte de l'identifiant, puis j'ai ressaisi l'identifiant et appuyé sur Entrée. J'ai ensuite sauvegardé le fichier de scénarimage et cela fonctionnait lorsque je l'ai exécuté.

12
demar

Dans mon cas, je prenais UITableViewCell dans un fichier xib séparé (c’est-à-dire que je n’inscrivais pas la cellule directement dans le tableau dans StoryBoard) et j’avais oublié de bien enregistrer la cellule dans le tableau de la manière suivante:

self.tableView.register(UINib(nibName: "NAME_OF_THE_CELL_CLASS", bundle: nil), forCellReuseIdentifier: "REUSE_IDENTIFIER");
1
Andrea Gorrieri