2014-11-09 14 views
13

Sto sviluppando un gioco semplice e sto avendo problemi quando un particolare UIViewController (chiamato SPSwipes.swift) viene caricato. Sullo schermo, ci sono tre pulsanti : 5, 10, e 25. Quando si è scelto, una variabile è impostata in quella scena e il giocatore si muove su al gioco principale: GameScene.swift.Swift: App di terminazione a causa di eccezione non identificata 'NSUnknownKeyException'

Per quanto ne so, le variabili sono rilevate nel GameScene, ma c'è errore di un 'NSUnknownKeyException' quando apro i SPSwipes visualizzare nel simulatore. Questo è fatto tramite un seguito. Qui è l'errore più in dettaglio:

2014-11-09 15:32:43.718 Swipe Racer[2644:1620056] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<Swipe_Racer.SPSwipes 0x7fbf52d461b0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key fiveSwipes.' 
*** First throw call stack: 
(
0 CoreFoundation      0x000000010c021f35 __exceptionPreprocess + 165 
1 libobjc.A.dylib      0x000000010dd1bbb7 objc_exception_throw + 45 
2 CoreFoundation      0x000000010c021b79 -[NSException raise] + 9 
3 Foundation       0x000000010c4397b3 -[NSObject(NSKeyValueCoding) setValue:forKey:] + 259 
4 CoreFoundation      0x000000010bf6be80 -[NSArray makeObjectsPerformSelector:] + 224 
5 UIKit        0x000000010cd28c7d -[UINib instantiateWithOwner:options:] + 1506 
6 UIKit        0x000000010cb87f98 -[UIViewController _loadViewFromNibNamed:bundle:] + 242 
7 UIKit        0x000000010cb88588 -[UIViewController loadView] + 109 
8 UIKit        0x000000010cb887f9 -[UIViewController loadViewIfRequired] + 75 
9 UIKit        0x000000010cb88c8e -[UIViewController view] + 27 
10 UIKit        0x000000010caa7ca9 -[UIWindow addRootViewControllerViewIfPossible] + 58 
11 UIKit        0x000000010caa8041 -[UIWindow _setHidden:forced:] + 247 
12 UIKit        0x000000010cab472c -[UIWindow makeKeyAndVisible] + 42 
13 UIKit        0x000000010ca5f061 -[UIApplication _callInitializationDelegatesForMainScene:transitionContext:] + 2628 
14 UIKit        0x000000010ca61d2c -[UIApplication _runWithMainScene:transitionContext:completion:] + 1350 
15 UIKit        0x000000010ca60bf2 -[UIApplication workspaceDidEndTransaction:] + 179 
16 FrontBoardServices     0x000000011383b2a3 __31-[FBSSerialQueue performAsync:]_block_invoke + 16 
17 CoreFoundation      0x000000010bf5753c __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ + 12 
18 CoreFoundation      0x000000010bf4d285 __CFRunLoopDoBlocks + 341 
19 CoreFoundation      0x000000010bf4d045 __CFRunLoopRun + 2389 
20 CoreFoundation      0x000000010bf4c486 CFRunLoopRunSpecific + 470 
21 UIKit        0x000000010ca60669 -[UIApplication _run] + 413 
22 UIKit        0x000000010ca63420 UIApplicationMain + 1282 
23 Swipe Racer       0x000000010be380de top_level_code + 78 
24 Swipe Racer       0x000000010be3811a main + 42 
25 libdyld.dylib      0x000000010e507145 start + 1 
26 ???         0x0000000000000001 0x0 + 1 
) 
libc++abi.dylib: terminating with uncaught exception of type NSException 
(lldb) 

Come potete vedere, c'è un problema con la mia prima variabile, fiveSwipes (e immagino che ci sarebbero errori con gli altri due). Che cosa significa 't la sua classe non è la chiave di codifica del valore-compatibile per la chiave fiveSwipes' significa? Come dovrei andare a ripararlo?

mio SPSwipes.swift di file:

class SPSwipes: UIViewController { 

var no_of_swipes = 0 

@IBAction func fiveSwipes(sender: AnyObject) { 
    no_of_swipes = 5 

//and so on 

} 

Grazie in anticipo,

Will

+0

possibile duplicato del [Questa classe non è il valore della chiave di codifica compatibile per il tasto] (http://stackoverflow.com/questions/3088059/this-class-is-not-key-value- codifica-compatibile-per-chiave) – jtbandes

risposta

24

Il problema era che il pulsante è stato collegato a numerosi IBActions - tre dei quali non esisteva. I tasto destro su sul pulsante nel Interface Builder e rimosso i collegamenti vecchi e irrilevanti, risolvendo il problema.

2

L'eccezione avviene quando si cerca di caricare la visualizzazione in base a ciò che si imposta in Interface Builder. Sta cercando fiveSwipes e non lo trova. Questo può accadere se hai modificato il tuo codice e hai dimenticato di aggiornare una connessione in IB.

Avete effettuato una connessione in IB a qualcosa chiamato fiveSwipes che non è questa funzione? Forse una variabile chiamata fiveSwipes? Il modo per risolvere il problema sarebbe quello di trovare l'elemento con la cattiva connessione in IB e cancellare quella connessione.

+1

Di quale viewcontroller stai parlando? – will

0

Un altro motivo possibile è se si sta inizializzando il controller utilizzando nibName: bundle: e si passa al nome del pennino errato - qualche altro pennino non adatto a questo controller. Il risultato finale è lo stesso, probabilmente ci saranno un sacco di @IButlet che non corrispondono tra il controller e il pennino.

1

Per me è stato perché avevo viste multiple collegate alla IBOutlets inesistenti

Per avere un'idea di come scoprire:

1- Cliccare su tutto il controller della vista

enter image description here

2- Vai a: Mostra connettore Ispettore

enter image description here

Vi si possono trovare tutti i punti vendita non collegati

+0

Ho avuto esattamente lo stesso problema. Grazie! –

1

Questa è una vecchia questione, le altre risposte din't aiuto per risolvere il mio problema in modo vorrebbe lasciare questa risposta qui potrebbe aiutare altre persone.

La nostra app contiene più "Obiettivi" ora accade che ViewController punta a un target specifico e solo su quel target questo ViewController funziona. Quando si esegue su un'altra destinazione, l'app si arresta in modo anomalo con questo errore.

Quindi, per coloro che hanno più "Targets" assicuratevi di controllare il "Modulo" in "Identity Inspector" e assicuratevi che sia selezionato "Inherit Module From Target".

screenshot

Problemi correlati