class不是键值按钮的键值编码

时间:2014-04-23 14:05:55

标签: objective-c

Objective-C的新手。我可以成功构建我的应用程序,但后来出现以下错误:

由于未捕获的异常终止应用程序&#39; NSUnknownKeyException&#39;,原因:&#39; [setValue:forUndefinedKey:]:此类不是密钥值编码兼容的密钥cardButton。&#39; < / p>

我使用连接检查器检查了页面上的每个按钮,但我没有看到任何警告。我可能添加了一个连接,然后将其删除错误,以便它仍然在后台的某个地方,有没有办法查看所有连接?我不太确定。

@property (strong, nonatomic) IBOutletCollection(UIButton) NSArray *cardButtons;


- (void)updateUI
{
    for (UIButton *cardButton in self.cardButtons) {
        int cardIndex = [self.cardButtons indexOfObject:cardButton];
        Card *card = [self.game cardAtIndex:cardIndex];
        [cardButton setTitle:[self titleForCard:card]
                    forState:UIControlStateNormal];
        [cardButton setBackgroundImage:[self backgroundImageForCard:card]
                              forState:UIControlStateNormal];
        cardButton.enabled = !card.isMatched;
    }
    self.scoreLabel.text = [NSString stringWithFormat:@"Score: %d", self.game.score];
}

2 个答案:

答案 0 :(得分:4)

  

此类不是密钥值编码兼容的密钥cardButton

因此,错误提及的关键是cardButton(没有&#39; s&#39;),但您的代码使用属性cardButtons。听起来你只是在某个地方错误拼写了属性名称,而忽略了这些。&#39;

  

我可能已添加连接然后将其删除

如果您之前使用名称cardButton作为您的媒体资源,可能很容易出现此错误,可能在您切换到收藏集之前。如果您在.xib或故事板中留下了与该属性相关联的对象,则iOS会在加载时将该对象连接到属性cardButton,从而导致您的运行时错误#&# 39;得到。您在Xcode中看不到任何警告,因为问题不在代码中。因此,请检查.xib或storyboard文件以查找连接到cardButton属性的对象。

答案 1 :(得分:2)

  1. 在故事板视图中,单击viewcontroller视图窗口底部的文件所有者按钮,位于黑色控制栏内。

  2. 在屏幕右侧的对象检查器窗口中,单击连接检查器,即右上角的小右箭头。在那里,您可以看到您正在寻找的所有连接。

  3. enter image description here