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.

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.'

編集: 私が問題を引き起こしたと思うもの。

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にも接続しました。

4

2 に答える 2

4

一般に、これは、あるオブジェクトに対して呼び出されたキーにアクセスしようとしているhotKeyDisplayEntryが、そのオブジェクトにはそのようなキーがないことを意味します。タイプミスまたは軽微な論理エラーが発生した可能性があります。

于 2009-07-06T06:01:19.947 に答える
1

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

これも読んでください:

CocoaでのKey-Valueコーディング(apple.com)

上記でない場合は、ivarでオブザーバーが指定されているか、オブジェクトのシリアル化を使用していて、実際にはアクセサーメソッドがないため、例外がスローされます。または、私があなたを助けるためにあなたが実際に行っていることを少し拡張する必要があります!

于 2009-07-06T06:00:03.353 に答える