2016-12-14 8 views
0

Я пытаюсь получить привязку к привязкам и настроил CPWindow с CPTextView в xcode и привязал окно и текстовое представление к их соответствующим выходам.Как сделать код KVO совместимым?

Я получаю немного застревание, но стараюсь, чтобы текст отображал _xmlContent. Я установил привязку в xcode к «делегировать» и путь к xmlContent (также попробовал self.xmlContent и _xmlContent и все его варианты, о которых я мог думать).

@import <Foundation/Foundation.j> 
    @import <AppKit/AppKit.j> 

    @implementation AppController : CPObject 
    { 
     @outlet CPWindow theWindow; 
     @outlet CPTextView codeView; 

     CPString _xmlContent @accessors(property=xmlContent); 
    } 

    // ... 

    @end 

сообщение я получаю сейчас:

CPUndefinedKeyException: <AppController 0x00a177> is not key value coding-compliant for the key xmlContent 

Как сделать мой AppController значение ключа кодирования совместимый для ключа «xmlContent»?

ответ

1

Ваш код выглядит правильно. Я воссоздал его сам, и она отлично работает для меня:

@implementation AppController : CPObject 
{ 
    @outlet CPWindow theWindow; 

    CPString _xmlContent @accessors(property=xmlContent); 
} 

- (void)applicationDidFinishLaunching:(CPNotification)aNotification 
{ 
} 

- (void)awakeFromCib 
{ 
    [theWindow setFullPlatformWindow:YES]; 
    [self setXmlContent:@"kitten"]; 

Xcode settings showing delegate binding to xmlContent

Safari showing binding working

Вы должны убедиться, что вы работаете код, который вы думаете, вы работаете. Одна из распространенных ошибок здесь заключается в том, что некоторым веб-браузерам действительно нравится вставлять кешированные копии вашего кода, поэтому убедитесь, что у вас включен параметр «Отключить кеши» в любом браузере, с которым вы тестируете.

Если все остальное не удается, измените номер порта вашего HTTP-сервера разработки и загрузите страницу с нового URL-адреса. Это заставит браузер получать свежие копии всего (потому что URL-адрес изменился).

+0

В то время как у меня не было «Отключить кеши» в Safari (сделайте сейчас!), Я попробовал несколько трюков, чтобы заблокировать кеш. Я думал, что я даже вручную очистил все тайники в Safari. Но, я думаю, я ошибся. – Kris

+0

Да, Safari может быть невероятно цепляется за кеш. У Chrome есть свой набор проблем, но я обнаружил, что опция «отключить кеш, а инструменты разработчика открытые» работает достаточно хорошо при разработке. –

+0

Это будет моя новая стратегия :) – Kris