tutorial the programming library language developer apple ios xcode swift

ios - the - swift language



Error de Xcode: no se puede sacar de la cola una celda con el identificador MealTableViewCell (3)

He estado siguiendo el tutorial de Apple here y me he encontrado con un error:

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''

El error aparece cuando se ejecuta el programa y la línea roja resaltada aparece en la línea de clase de AppDelegate.swift

Estas son las líneas de código que creo que están causando el error, como descubrí a través de puntos de interrupción:

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 }

He mirado alrededor en línea y muchas respuestas han asegurado que el TableCell tiene un identificador, sin embargo el mío sí y el error sigue apareciendo.

Por favor, hágamelo saber si necesito publicar más información.

Gracias por adelantado


En mi caso, tomaba el UITableViewCell de un archivo xib separado (es decir, no estaba insertando la celda directamente en el TableView en storyBoard) y olvidé registrar correctamente la celda en el tableView de esta manera:

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


Esto funciona para mi ..

y estoy usando un identificador diferente, "DeviceDetailsCell"

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


Solo para que quede constancia, así es como resolví mi problema:

Tomé el identificador actual que estaba en el inspector de atributos, lo eliminé, presioné regresar y hice clic. Después de eso, volví a hacer clic en el cuadro de texto del identificador, volví a escribir el identificador y presioné Intro. Luego guardé el archivo del guión gráfico y funcionó cuando lo ejecuté.