Pregunta ¿Qué significa esto? "'NSUnKeyKeyException', razón: ... esta clase no cumple con el código de clave para la clave X"


Estoy intentando vincular un UILabel con un IBOutlet creado en mi clase.

Mi aplicación se bloquea con el siguiente error. ¿Qué significa esto? ¿Cómo puedo arreglarlo?

*** Aplicación de finalización debido a la excepción no detectada 'NSUnKeyKeyException', razón: '[<UIViewController 0x6e36ae0> setValue: forUndefinedKey:]: esta clase no es un valor clave que cumple con la codificación de la clave XXX.'


983


origen


Respuestas:


Su controlador de vista puede tener la clase incorrecta en su xib.

Descargué tu proyecto.

El error que estás recibiendo es

'NSUnknownKeyException', razón: '[<UIViewController 0x3927310> setValue: forUndefinedKey:]: esta clase no es un valor clave que cumple con la codificación para la cadena clave'.

Es causado por el Second ver el controlador en MainWindow.xib teniendo una clase de UIViewController en lugar de SecondView. Cambiar a la clase correcta resuelve el problema.

Por cierto, es una mala práctica tener nombres como "cadena" en Objective-C. Invita a una colisión de nombres de tiempo de ejecución. Evítelos incluso en aplicaciones de práctica una vez fuera. Nombrar colisiones puede ser muy difícil de rastrear y no quiere perder el tiempo.

Otra posible razón de este error: al copiar y pegar elementos de un controlador a otro, Xcode de alguna manera mantiene ese enlace al controlador original, incluso después de editar y volver a vincular este elemento en el nuevo controlador.


807



Puede tener una mala conexión en su xib.

He tenido este error muchas veces. Si bien la respuesta de TechZen es absolutamente correcta en este caso, otra causa común es cuando cambiar el nombre de una propiedad IBOutlet en su .h / .m que ya ha conectado al propietario del archivo en el plumín.

De su punta:

  1. Seleccione el objeto en IB y vaya al 'Inspector de Conexiones'.
  2. En 'Hacer referencia a puntos de venta', asegúrese de que su objeto aún no esté conectado al nombre de la propiedad anterior ... si es así, haga clic en la pequeña 'x' para eliminar la referencia y construir de nuevo.

    example 1

Otra causa común si está utilizando Storyboard, su UIButton podría tener más de una asignación (Solution es casi la misma que para el plumín):

  1. Abra su guión gráfico y haga clic con el botón secundario en UIButton
  2. Verás que hay más de una asignación / ref de este botón. Elimine una de las ventanas grises "Principal ..." con la pequeña "x":

    example 2


1397



Tuve que eliminar la aplicación del simulador / iPhone para deshacerme de este error.


101



Tuve este error cuando estaba tratando de implementar una ViewCell personalizada para una tabla. Cuando resalté View controller for the XIB y me conecté a los elementos en CellView, ocasioné el error "esta clase no es clave con codificación de valor para la clave". Una vez que los eliminé, eliminó el error.

Eliminar las conexiones en la imagen de abajo. Delete the connections in inspector when File Owner is highlighted

Solo asegúrese de que solo tenga las conexiones con la Celda de vista de tabla. Para marcar, haga clic en la celda de la vista de tabla y en INSPECTOR busque sus conexiones.

The connection should be in here when Table View Cell is highlighted


84



Si se trata de una aplicación exclusiva para iPhone, no universal, asegúrese de que el siguiente campo esté vacío:

Objetivos> Resumen> Información de implementación de iPhone / iPod> Interfaz principal

Si especifica un xib allí se bloquea.


61



Este error indica que un Interface Builder ya conectado el objeto es eliminado / renombrado en la fuente de su propietario (Propietario del archivo).

Control-clic en el Propietario de archivos en el Interface Builder si ves un signo de exclamación necesitas arreglar eso.

En la imagen a continuación, puede ver que "aRemovedView" tiene un signo de admiración a la derecha, es porque eliminé el objeto de vista IBOutlet mientras ya estaba conectado en el IB.

enter image description here

Esto da el siguiente error: Aplicación de finalización debido a la excepción no detectada 'NSUnKeyKeyException', razón: '[setValue: forUndefinedKey:]: esta clase no es un valor clave que cumple con la codificación para la clave aRemovedView. '


56



Tuve el mismo problema y, aunque la respuesta de TechZen puede ser sorprendente, me resultó difícil aplicarla a mi situación.

Finalmente resolví el problema al vincular la etiqueta a través del Controlador que figura debajo Objetos (resaltado en la imagen a continuación) en lugar de a través del Propietario del archivo.

Espero que esto ayude.

enter image description here


40



A veces esto tiene que ver con su "Heredar del objetivo". Ese valor debe establecerse. Con las aplicaciones de destino único, puede seleccionar Heredar de destino. Si tiene más de un objetivo, seleccione el objetivo deseado. enter image description here


39