2016-12-14 88 views
0

我試圖抓住綁定,並已經在xcode中設置了CPTextView的CPWindow,並將窗口和textview綁定到它們各自的出口。如何使此代碼符合KVO?

但是我試圖讓textview顯示_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

是啊野生動物園可以令人難以置信的緊貼其緩存。 Chrome有它自己的一套問題,但我發現在開發人員開發工具打開的情況下「禁用緩存」選項可以很好地工作。 –

+0

這將是我的新策略:) – Kris