2012-03-30 21 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.'" 

Non c'è variabile chiamata loginButton così Im non so perché sto ottenendo un errore ...

Grazie

+0

Non hai caricato il codice rilevanti per il vostro errore, aggiungerlo. –

risposta

31

Si riceve l'errore perché non esiste una proprietà denominata loginButton. Controlla il tuo file .xib. C'è quasi certamente un brutto collegamento a un oggetto FinalViewWithSending (probabilmente il proprietario del file) che specifica loginButton anche se non esiste nel codice della classe.

+0

Non c'è un collegamento errato. Ho controllato. Dovrei semplicemente creare una variabile loginButton? – Szwedo

+1

Non so ... se fossi in me, preferirei trovare l'errore reale. Cosa fare se si fa clic con il pulsante destro del mouse su FinalViewWithSending.xib, lo si apre come codice sorgente e si cerca il simbolo come testo? A volte le cose diventano strane nello xib in modi che non vengono visualizzati come elementi dell'interfaccia utente in Xcode. –

+0

Come lo si apre come codice sorgente? Sono andato al controllo del codice sorgente e ho commesso dei cambiamenti ... Non sono riuscito a trovarlo neanche lì. – Szwedo

8

Phillip Mills è corretto.

La risposta qui, per chiunque cerchi, è modificare lo storyboard e rimuovere qualsiasi collegamento alla chiave non definita specificata. Devi modificare il file storyboard in un editor esterno: fai clic con il pulsante destro del mouse sull'elenco della storyboard nella gerarchia e poi fai clic su "mostra in finder" o su cosa hai. Apri in un editor di testo, rimuovi i suddetti collegamenti cercando, salvando e ritornando a Xcode. Non più problema.

Ciò accade quando si rimuove qualcosa dal controller di visualizzazione in modo errato.

+0

Mi è successo quando sono rimasto un UIImageView. –

+1

Per i principianti qui, non è necessario aprire un editor di testo e modificare lo storyboard. Visualizza-> Utilità-> Mostra ispettore connessioni fare clic sui pulsanti diversi, quindi vedere la cattiva connessione –

2

Se si dispone di localizzazioni, cercare i collegamenti non validi in tutti gli storyboard (espandere lo storyboard per trovare gli storyboard localizzati).

Questa era la mia situazione. Stavo cercando collegamenti errati in uno storyboard e si trovavano in uno localizzato.

7

Accetto qui - Phillip Mills è corretto.

Qualcuno ha menzionato l'apertura dello storyboard in un editor di testo - questo non è necessario.

Basta fare clic sullo storyboard, vai a Connections Inspector. Se hai uno sbocco problematico, vedrai un punto esclamativo vicino alla presa. Cancellalo.

+0

Risoluzione problema risolto problema risolto. Ecco cosa faccio, fai clic sul ViewController che genera questo errore, vai a ** Inspections di Connections ** andando su ** View-> Utilities-> Show Connections Inspector ** in Xcode 8.1 o semplicemente ** ⌥⌘6 ** . –

0

È possibile utilizzare gli oggetti associati per evitare la sottoclasse. Per quanto riguarda setValue: forKey: e setValue: forUndefinedKey :, dai uno sguardo nel file di intestazione (NSKeyValueCoding.h) per i dettagli.

In base alla descrizione, Trova newView nel builder dell'interfaccia e fai clic con il pulsante destro del mouse, vedrai qualcosa come loginButton che è anormale.

0

Oggi stavo lavorando e ho presentato lo stesso errore, ho usato la risposta di Phillip Mills era corretto e avevo alcune etichette in un ViewController.xib a cui non venivano assegnati collegamenti, ho cinque link errati, una volta assegnati i collegamenti , tutto funziona perfettamente, grazie risposta di Phillip Mills.

1

Ho avuto lo stesso problema:

precedenza avevo fatto una connessione utilizzando storyboard da un campo di testo in un file di intestazione. In seguito ho deciso che volevo rinominare la connessione del mio oggetto, sfortunatamente, non ho interrotto la connessione correttamente. Se questo problema era uguale al mio, in precedenza esisteva una connessione a un pulsante e il codice nell'intestazione veniva eliminato, ma la connessione non lo era.

Controllare le connessioni dell'oggetto nella vista che si sta seguendo.

0

Andare alla finestra di ispezione del proprio xib di FinalViewWithInformatore di vista di trasmissione & rimuovere il riferimento del pulsante di accesso. Dopo che funzionerà. Provalo ... :)

0

Probabilmente, hai precedentemente creato il LoginButton, Cmd + Shift + F e trova il "LoginButton" e rimuovi il Reference Outlet e Re-build.

0

È possibile provare il modo in cui sono stato utilizzato per risolvere il problema setValue:forUndefinedKey:]:.

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

3

Dal momento che questo è il primo risultato di ricerca per questo errore, ho deciso di scrivere una risposta per esordienti come me.

Si otterrà questo errore se Ctrl ha trascinato le connessioni da pulsanti che generano codice nel ViewController e quindi si elimina solo il codice senza rimuovere la connessione.

Ho ricevuto questo errore perché avevo accidentalmente aggiunto alcuni pulsanti come Outlets, quando volevo aggiungerli come Azioni. Ho cancellato il codice generato ma le cattive connessioni erano ancora lì.

Per trovare e rimuoverli, Visualizza-> Utilità-> Mostra Connessioni Inspector

Quindi fare clic attraverso i vari pulsanti che avete e fare clic sulla X per rimuovere le cattive connessioni.

enter image description here