2009-07-06 20 views
1

2009-07-06 06:49:13.666 Spark[9825:10b] -[<NSUserDefaultsController 0x137af0> valueForUndefinedKey:]: this class is not key value coding-compliant for the key hotKeyDisplayEntry.Warum bedeuten diese Fehler in Xcode?

2009-07-06 06:49:13.667 Spark[9825:10b] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<NSUserDefaultsController 0x137af0> valueForUndefinedKey:]: this class is not key value coding-compliant for the key hotKeyDisplayEntry.'

EDIT: Was ich das Problem verursacht denken.

OSStatus MyHotKeyHandler(EventHandlerCallRef nextHandler,EventRef theEvent,void *userData) 
{ 
    EventHotKeyID hkCom; 
    GetEventParameter(theEvent,kEventParamDirectObject,typeEventHotKeyID,NULL,sizeof(hkCom),NULL,&hkCom); 
    HotKeyController *controller = (HotKeyController *)userData; 
    int l = hkCom.id; 
    switch (l) { 
     case 1: [controller->window makeKeyAndOrderFront:NSApp]; 
      break; 
     case 2: [controller->searchWindow makeKeyAndOrderFront:nil]; 
      break; 
     case 3: [controller->entryWindow makeKeyAndOrderFront:nil]; 
      break; 
    } 
    return noErr; 
} 

- (void)awakeFromNib 
{ 
    //Register the Hotkeys 
    EventHotKeyRef gMyHotKeyRef; 
    EventHotKeyID gMyHotKeyID; 
    EventTypeSpec eventType; 
    eventType.eventClass=kEventClassKeyboard; 
    eventType.eventKind=kEventHotKeyPressed; 


    InstallApplicationEventHandler(&MyHotKeyHandler,1,&eventType,(void *)self,NULL); 

    gMyHotKeyID.signature='htk1'; 
    gMyHotKeyID.id=1; 
    if([[NSUserDefaults standardUserDefaults] integerForKey:@"hotkeyCodeMain"]!=-999) { 
     RegisterEventHotKey([[NSUserDefaults standardUserDefaults] integerForKey:@"hotkeyCodeMain"], [[NSUserDefaults standardUserDefaults] integerForKey:@"hotkeyModifiersMain"], gMyHotKeyID, GetApplicationEventTarget(), 0, &gMyHotKeyRef); 
    } 

    gMyHotKeyID.signature='htk2'; 
    gMyHotKeyID.id=2; 
    if([[NSUserDefaults standardUserDefaults] integerForKey:@"hotkeyCodeSearch"]!=-999) { 
     RegisterEventHotKey([[NSUserDefaults standardUserDefaults] integerForKey:@"hotkeyCodeSearch"], [[NSUserDefaults standardUserDefaults] integerForKey:@"hotkeyModifiersSearch"], gMyHotKeyID, GetApplicationEventTarget(), 0, &gMyHotKeyRef); 
    } 

    gMyHotKeyID.signature='htk3'; 
    gMyHotKeyID.id=3; 
    if([[NSUserDefaults standardUserDefaults] integerForKey:@"hotkeyCodeEntry"]!=-999) { 
     RegisterEventHotKey([[NSUserDefaults standardUserDefaults] integerForKey:@"hotkeyCodeEntry"], [[NSUserDefaults standardUserDefaults] integerForKey:@"hotkeyModifiersEntry"], gMyHotKeyID, GetApplicationEventTarget(), 0, &gMyHotKeyRef); 
    } 

} 

In der NIB habe ich auch ein Textfeld an einen NSDefaultsController angeschlossen.

+0

Es würde wahrscheinlich helfen, den Code rund um die Ausnahmen zu posten (Blick durch Backtrace im Debugger wird helfen) – cobbal

+0

Ist dies nicht nur eine Frage aus Ihrem letzten Versuch auf diese Funktion http://StackOverflow.com/questions/ 1072822/why-is-xcode-gib mir-diese-Fehler? – Abizern

+0

Nein, es ist ein anderer Code. – Joshua

Antwort

4

Im Allgemeinen bedeutet dies, dass Sie versuchen, auf einen Schlüssel namens hotKeyDisplayEntry für ein Objekt zuzugreifen, aber dieses Objekt hat keinen solchen Schlüssel. Sie haben wahrscheinlich einen Tippfehler oder einen kleinen logischen Fehler gemacht.

+3

Genauer gesagt, Joshua, Sie versuchen, auf eine hotKeyDisplayEntry -Eigenschaft des User Defaults Controller zuzugreifen, aber es hat keine solche Eigenschaft. Hast du vergessen, durch seine Werte-Eigenschaft zu binden? (Controller-Schlüssel: Werte; Modellschlüsselpfad: hotKeyDisplayEntry) –

+0

Ah, da bin ich falsch gelaufen, Danke Peter! – Joshua

1

Sie (oder ein Code) scheint Schlüssel-Wert-Codierung für Ihre Klassen zu verwenden. Ich nehme an, es gibt irgendwo einen hotKeyDisplayEntry-Ivar, vielleicht in einer Nib definiert und eine Verbindung hergestellt, aber nicht in Ihrer Klasse?

das Lesen Sie auch:

Key-Value Coding in Cocoa (apple.com)

Wenn es nicht der oben ist es wahrscheinlich entweder ein Beobachter auf einem Ivar angegeben oder verwenden Objektserialisierung und nicht tatsächlich eine Accessor-Methode für sie und löst somit eine Ausnahme aus. Entweder oder, Sie müssen ein wenig erweitern, was Sie tatsächlich tun, damit ich Ihnen helfen kann!

+0

Ich habe versucht, einen Hotkey zu machen, ich werde den Code posten, von dem ich denke, dass er das Problem für dich gemacht hat. – Joshua

+0

Aktualisiert den ersten Beitrag mit mehr Infos, was denkst du ist jetzt falsch? – Joshua