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];
}
答案 0 :(得分:4)
此类不是密钥值编码兼容的密钥cardButton
因此,错误提及的关键是cardButton
(没有&#39; s&#39;),但您的代码使用属性cardButtons
。听起来你只是在某个地方错误拼写了属性名称,而忽略了这些。&#39;
我可能已添加连接然后将其删除
如果您之前使用名称cardButton
作为您的媒体资源,可能很容易出现此错误,可能在您切换到收藏集之前。如果您在.xib或故事板中留下了与该属性相关联的对象,则iOS会在加载时将该对象连接到属性cardButton
,从而导致您的运行时错误#&# 39;得到。您在Xcode中看不到任何警告,因为问题不在代码中。因此,请检查.xib或storyboard文件以查找连接到cardButton
属性的对象。
答案 1 :(得分:2)
在故事板视图中,单击viewcontroller视图窗口底部的文件所有者按钮,位于黑色控制栏内。
在屏幕右侧的对象检查器窗口中,单击连接检查器,即右上角的小右箭头。在那里,您可以看到您正在寻找的所有连接。