2014-04-23 27 views
2

Objective-C的新增功能。我可以成功創建我的應用程序,但後來我得到以下錯誤:類不是鍵編碼兼容的鍵按鈕

終止應用程序由於未捕獲的異常'NSUnknownKeyException',原因:'[setValue:forUndefinedKey:]:此類不是密鑰編碼兼容的密鑰cardButton「。

我用連接檢查器檢查了頁面上的每個按鈕,但沒有看到任何警告。我可能已經添加了一個連接,然後不正確地刪除它,所以它仍然在後臺某處,有沒有辦法查看所有連接?我不太確定。

@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
  1. 在您的故事板視圖中,單擊位於黑色控制欄內視圖控制器視圖窗口底部的文件所有者按鈕。

  2. 在屏幕右側的對象檢查器窗口中,單擊連接檢查器,即右上角的小右箭頭。你可以看到你正在尋找的所有關係。

enter image description here

4

this class is not key value coding-compliant for the key cardButton

從而使錯誤中提到的關鍵是cardButton(無 'S'),但你的代碼使用屬性cardButtons。這聽起來像是你在某個地方簡單地拼錯了房產名稱,而忽略了's'。

I may have added a connection and then deleted it

這很容易,如果你以前使用的名稱cardButton你的財產得到這個錯誤,你切換到集也許之前。如果您在.xib或storyboard中保留了一個連接到該屬性的對象,那麼iOS會在加載時嘗試將該對象連接到屬性cardButton,從而導致您正在獲取的運行時錯誤。您在Xcode中看不到任何警告,因爲您的代碼中的問題不是,而是。因此,請檢查您的.xib或故事板文件以查找連接到cardButton屬性的對象。

+0

cardButtons和cardButton拼寫正確。 cardButtons是數組,而cardButton是該數組的代表性按鈕。 –

+0

@KavehVejdani我明白了,但考慮到錯誤,很顯然,OP在某處試圖使用「cardButton」鍵,並且所討論的類不支持該鍵。發佈的代碼似乎不是問題,但錯誤可能在代碼中的其他位置,或者,正如我所建議的,它可能是一個.xib或storyboard文件中的連接。 – Caleb

+0

我同意。他的問題是:「有沒有辦法看到所有的聯繫?」 –

相關問題