如何使此代码符合KVO标准?

时间:2016-12-14 17:08:41

标签: cappuccino objective-j

我试图抓住绑定,并在xcode中设置了一个带有CPTextView的CPWindow,并将窗口和textview绑定到各自的插座。

我试图让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键值编码符合密钥&#34; xmlContent&#34;?

1 个答案:

答案 0 :(得分: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

您应该验证您是否正在运行您认为正在运行的代码。这里常见的一个缺陷是,某些Web浏览器真的喜欢挂起代码的缓存副本,因此请确保您拥有&#34;禁用缓存&#34;在您正在测试的任何浏览器中启用选项。

如果所有其他方法都失败,请更改开发HTTP服务器的端口号并从新URL加载页面。这将强制浏览器获取所有内容的新副本(因为URL已更改)。