2012-03-30 17 views
18
FinalViewWithSending *newView = [[FinalViewWithSending alloc]initWithNibName:@"FinalViewWithSending" bundle:nil]; 
newView.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; 
[self presentModalViewController:newView animated:YES]; //it crashes here with a thread 1 error, SIGABRT error.. 

Dice:setValue: forUndefinedKey:]:

"Terminating app due to uncaught exception 'NSUnknownKeyException', 
reason: '[<FinalViewWithSending 0x1bef70> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key loginButton.'" 

no hay una variable llamada loginButton así que no estoy seguro de por qué estoy recibiendo un error ...

Gracias

+0

No ha subido el código correspondiente a su error, por favor agregarlo. –

Respuesta

31

Obtiene el error porque no hay ninguna propiedad llamada loginButton. Verifica tu archivo .xib. Es casi seguro que hay un enlace incorrecto a un objeto FinalViewWithSending (probable propietario del archivo) que especifica loginButton aunque no exista en el código de clase.

+0

No hay un mal enlace. Lo comprobé. ¿Debo simplemente crear una variable loginButton? – Szwedo

+1

No sé ... si fuera yo, preferiría encontrar el error real. ¿Qué sucede si hace clic con el botón derecho en FinalViewWithSending.xib, lo abre como código fuente y busca el símbolo como texto? A veces las cosas se ponen raras en el xib de formas que no se muestran como elementos de UI en Xcode. –

+0

¿Cómo se abre como código fuente? Simplemente fui al control de fuente y cometí cambios ... No pude encontrarlo allí tampoco. – Szwedo

8

Phillip Mills es correcto.

La respuesta aquí, para cualquier persona que busque, es editar el guión gráfico y eliminar cualquier enlace a la clave indefinida especificada. Tienes que editar el archivo del guión gráfico en un editor externo: haz clic con el botón derecho en el listado del guión gráfico en la jerarquía y luego haz clic en "mostrar en el buscador" o lo que sea. Abrir en un editor de texto, eliminar dichos enlaces buscando, guardar y regresar a Xcode. No más problema

Esto sucede cuando se extrae algo del controlador de visualización de forma incorrecta.

+0

Me pasó cuando permanecí como UIImageView. –

+1

Para novatos, no tiene que abrir un editor de texto y editar el guión gráfico. Ver-> Utilidades-> Mostrar inspector de conexiones, haga clic en los diferentes botones para ver la conexión incorrecta –

2

Si tiene alguna localización, busque enlaces defectuosos en todos los guiones gráficos (amplíe el guión gráfico para buscar guiones gráficos localizados).

Esta era mi situación. Estaba buscando enlaces malos en un guión gráfico y estaban en el localizado.

7

Estoy de acuerdo aquí - Phillip Mills está en lo cierto.

Alguien mencionó abrir el guión gráfico en un editor de texto; esto no es necesario.

Simplemente haga clic en el guión gráfico, vaya al Inspector de conexiones. Si tienes una salida problemática, verás un marcador de exclamación al lado de la salida. Bórralo.

+0

Solucionar problemas de salida solucionó mi problema. Esto es lo que hago, haga clic en ViewController que arroja este error, vaya a ** Connections Inspector ** yendo ** Ver-> Utilidades-> Mostrar inspector de conexiones ** en Xcode 8.1 o simplemente ** ⌥⌘6 ** . –

0

Puede usar objetos asociados para evitar la creación de subclases. En cuanto a setValue: forKey: y setValue: forUndefinedKey :, eche un vistazo en el archivo de encabezado (NSKeyValueCoding.h) para más detalles.

De acuerdo con su descripción, Encuentre newView en su constructor de interfaz y haga clic con el botón derecho en él, verá algo como loginButton que es anormal.

0

Hoy estaba trabajando y presenté este mismo error, utilicé la respuesta de Phillip Mills era correcta y tenía algunas etiquetas en un ViewController.xib que no tenían enlaces asignados, tengo cinco enlaces malos, una vez asignados enlaces , todo funciona perfectamente, gracias respuesta de Phillip Mills.

1

que tenían el mismo problema:

que había hecho previamente una conexión utilizando guiones gráficos desde un campo de texto en un archivo de cabecera. Más tarde decidí que quería cambiar el nombre de la conexión de mi objeto. Desafortunadamente, no rompí la conexión correctamente. Si este problema era el mismo que el mío, anteriormente existía una conexión con un botón y el código en el encabezado se eliminaba, pero la conexión no.

Compruebe las conexiones de objeto en la vista a la que va a seguir.

0

Vaya al inspector de conexiones de su controlador de vista final Xib de FinalViewWithSend & quite la referencia del botón de inicio de sesión. Después de eso correrá. Pruébalo ... :)

0

Probablemente, anteriormente creaste el LoginButton, Cmd + Shift + F y encuentras el "LoginButton" y quitas el Referencing Outlet and Re-build.

0

Puede intentar la forma en que solía solucionar mi problema setValue:forUndefinedKey:]:.

http://i.stack.imgur.com/PDjub.png

3

Dado que este es el primer resultado de búsqueda para este error, decidí escribir una respuesta para los novatos como yo.

Recibirá este error si Ctrl ha arrastrado conexiones desde Botones que generan código en su ViewController y luego elimina el código sin eliminar la conexión.

Recibí este error porque accidentalmente agregué algunos botones como Outlets, cuando quise agregarlos como acciones. Eliminé el código que se generó, pero las conexiones malas aún estaban allí.

Para buscar y eliminarlos, Ver-> Mostrar Utilidades-> Conexiones inspector

A continuación, haga clic a través de los diferentes botones que tenga y haga clic en la X para eliminar las malas conexiones.

enter image description here

Cuestiones relacionadas