2016-12-14 43 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