2009-07-06 18 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.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: 私は問題の原因となったと思いますどのような。

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); 
    } 

} 

NIBでは、NSDefaultsControllerにテキストフィールドも接続しました。

+0

これはおそらく、例外を取り巻くコードを投稿するのに役立ちます(デバッガのバックトレースを見れば助けになります) – cobbal

+0

この関数の最後の試行ではこれはちょっと疑問ですか?http://stackoverflow.com/questions/ 1072822/why-is-xcode-giving-me-these-errors? – Abizern

+0

いいえ、別のコードセットです。 – Joshua

答えて

4

一般に、これは、あるオブジェクトに対してhotKeyDisplayEntryという名前のキーにアクセスしようとしていますが、そのオブジェクトにはそのようなキーはありません。タイプミスやマイナーな論理エラーが発生した可能性があります。

+3

具体的には、Joshua、User Defaults ControllerのhotKeyDisplayEntryプロパティにアクセスしようとしていますが、そのようなプロパティはありません。値のプロパティをバインドすることを忘れましたか? (コントローラキー:値;モデルキーパス:hotKeyDisplayEntry) –

+0

ああ、それは私が間違っていたところです、ピーターありがとう! – Joshua

1

あなた(またはいくつかのコード)は、クラスでキー値コーディングを使用しているようです。私はhotkeyDisplayEntry ivarがどこかにあると仮定します。おそらくペン先と接続で定義されていますが、あなたのクラスでは定義されていませんか?

もこれを読んで:

Key-Value Coding in Cocoa (apple.com)

それ以上、おそらくどちらかのIVARにオブザーバーを指定されているか、オブジェクトのシリアル化を使用していて、実際にそれのためのアクセサメソッドを持っていないではない場合したがって、例外がスローされます。どちらか、またはあなたが私のために実際にやっていることを少しでも広げて、あなたを助けてください!

+0

私はホットキーを作ろうとしていましたが、あなたが見ていると思ったコードを投稿します。 – Joshua

+0

最初の投稿をもっと情報で更新しましたが、今何が間違っていると思いますか? – Joshua

関連する問題