2010-06-23 76 views
4

我創建了三個文件SettingsViewController.h,SettingsViewController.m和SettingsViewController.xib。這個類是不符合編碼的關鍵值

我在單擊一行中的單元格時顯示了SwttingsViewController.xib。 xib文件上有一個標籤和滑塊。它工作正常。但是在使用接口構建器創建連接之後。即從redLabel插座拖放到我的Xib文件上的標籤我得到這個錯誤和應用程序終止。

'[<UIViewController 0x3d636d0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key redLabel.'

回答

3

它看起來像SwttingsViewController.xib的文件所有者有錯誤的類。進入Interface Builder並將文件所有者的類更改爲SettingsViewController。有關File Owner和UIViewController的詳細信息,請參閱this page

+0

我在界面構建器中指向正確的文件。它給我同樣的錯誤,我的文件所有者的類型是空的或SettingsViewController。 – coure2011 2010-06-23 09:30:24

+0

是的你是對的,在代碼我沒有正確啓動控制器。我正在這樣做(錯誤) controller = [[UIViewController alloc] initWithNibName:@「SettingsViewController」bundle:nil]; – coure2011 2010-06-23 09:39:57

+0

它應該是 controller = [[SettingsViewController alloc] initWithNibName:@「SettingsViewController」bundle:nil]; – coure2011 2010-06-23 09:40:34

5

我有一個類似的問題接受我的問題是界面生成器沒有收拾我刪除的項目。所以它留在源代碼中。

通過進入xib文件修復了問題。右鍵單擊該文件,選擇「打開爲」,然後「源碼 我被包含在errore消息: 這個類不是鍵值編碼兼容的關鍵originalField

我的錯誤信息,你可以看到給我在這種情況下,它是一個文本字段,我刪除了,但接口生成器沒有正確清理。

我去了源代碼並搜索originalField並刪除了引用所有固定。

0

感謝哈羅德! 您的答案讓我解決我的! 我有d選擇了一個NSString變量,該筆尖沒有正確清理。 對我來說最快的方法是刪除筆尖並製作另一個解決它的筆尖。 謝謝, Gaz。

0

發生此錯誤的原因通常是重命名源中的屬性或方法,而不是將控件從舊值斷開連接並將控件重新連接到新命名的值。

因爲我們知道這個錯誤信息通常意味着您在xib或storyboard中有一個控件連接到源中不存在的屬性或動作。記住每個@property創建一個setPropertyName setter方法和一個propertyName getter。您可以檢查連接檢查器中xib中的每個控件仍連接到有效的IBOutlet或IBAction。

爲了避免這個問題,使用重構 - >重命名菜單選項,Xcode將確保兩個條目都被更新。

0

當我爲UIView的子類創建一個.xib對象時,我遇到了同樣的問題。

問題是:創建約束時,會出現一個「對象」下拉列表,其中包含2個值:「文件所有者」和我的對象名稱:「彈出視圖」。

選擇「文件所有者」時,如果我添加了單個插座,它將會失敗。但是,如果使用我的班級名稱重新添加所有插座:「PopoverView」,則只需從「Nib」創建即可,無需「鍵值編碼兼容錯誤」。

查看截圖。

雖然我通過單擊筆尖頂部視圖中的「PopoverView」並選擇「Custom Class」選項卡並確保它設置爲「PopoverView」 「 那裏。見屏幕截圖: enter image description here

所以唯一幫助我的是:確保我的「Popover View」類名被選中在「Object」字段中創建約束時,而不是File's Owner。

相關問題