2012-04-14 140 views
47

我很新xcode ...一個應用程序(簡單的計算器)工作非常好(在模擬器和設備上)。這個類不是密鑰編碼兼容的關鍵視圖

2012-04-14 12:17:27.123 CalcTest [27550:F803] 當我在摘要從設置主接口選項目標,我啓動模擬器時得到以下錯誤*終止應用程序由於 未捕獲的異常「NSUnknownKeyException」,

原因: 「[<UIApplication 0x6a14650> setValue:forUndefinedKey:]:這個類是編碼兼容的關鍵calculatorScreen 不鍵值」

*第一擲調用堆棧:(0x12db022 0x18f8cd6 0x12daee1 0xcc2022 0xc33f6b 0xc33edb 0xc4ed50 0x53671a 0x12dcdea 0x12467f1 0x53526e 0x536eb7 0x313ce1 0x313ff8 0x31317f 0x322183 0x322c38 0x316634 0x27fcef5 0x12af195 0x1213ff2 0x12128da 0x1211d84 0x1211c9b 0x312c65 0x314626 0x1bad 0x1b15爲0x1)終止叫做拋出 異常(lldb)

找到問題,我開始了一個新的基於視圖的項目。

運行在模擬器上的空新的項目 - >工作,

但是,當我設置主界面,視圖控制器,在摘要 - >模擬器崩潰與

2012-04-14 12:11:17.492崩潰[27494:F803] *終止應用程序由於未捕獲 異常 'NSUnknownKeyException',原因:

[<UIApplication 0x6a6f4b0> setValue:forUndefinedKey:] :這個類是 而不是關鍵值編碼兼容的關鍵視圖。' *第一擲調用堆棧:

(0x13c7022 0x1558cd6 0x13c6ee1 0x9bf022 0x930f6b 0x930edb 0x94bd50 0x23371a 0x13c8dea 0x13327f1 0x23226e 0x233eb7 0x10ce1 0x10ff8 0x1017f 0x1f183 0x1fc38 0x13634 0x12b1ef5 0x139b195 0x12ffff2 0x12fe8da 0x12fdd84 0x12fdc9b 0xfc65 0x11626 0x1d4d 0x1cb5)終止叫 投擲一個例外

有沒有解決這個問題的方法?

+2

當我看到之前,這是因爲該筆尖仍然有一個鏈接到我已經刪除或重命名的IBOutlet或IBAction。不確定在這種情況下這是否有幫助。 – GregularExpressions 2012-04-14 10:33:04

回答

88

如果您的視圖控制器中已鏈接到屬性(IBOutlet)或方法(IBAction)的nib(xib文件)中有一個控件,並且您已刪除或重命名該屬性或方法,則運行時可以沒有找到它,因爲它已被重命名,因此崩潰。

就你而言,你已經將項目的主界面屬性設置爲你的ViewController.nib。這是一個問題,因爲應該用作主接口的唯一筆尖應該具有UIWindows,並且該筆尖中的文件所有者應該設置爲AppDelegate。筆尖中的UIWindow應鏈接到文件所有者(AppDelegate)窗口屬性。因爲你用一個沒有運行時所需特徵的筆尖來設置它,它會給你這個錯誤。

解決方法是將主界面留空,因爲您不必手動設置UIWindows。

+0

解決這個問題的方法是在你的筆尖中取消它。 – 2012-04-14 11:13:35

+0

好的,讓我試着重新創建你的問題。 – 2012-04-14 11:28:36

+0

當你說:「在默認ViewController.h,m和xib中設置總結」 – 2012-04-14 11:31:47

4

試試這個,

轉到TARGET =>構建階段=>編譯源代碼

然後包括 'calculatorScreen.m'

+1

刪除ViewController.m並再次添加 – PETER 2014-07-19 06:58:10

5

,如果你收到類似的消息:

  • 由於未捕獲異常'NSUnknownKeyException'而終止應用程序,原因:

'[setValue:forUndefinedKey:]:該類不是密鑰編碼兼容密鑰

單擊BreakPoint導航區域左下角的加號(+),選擇'添加異常斷點',因爲它由於'NSUnknownKeyException'而崩潰,並選擇'All'。運行該程序。程序在第一個異常處停止。

12

剛剛遇到同樣的問題,並通過右鍵Control-Clicking來控制xib文件中的控件來查看引用Outlets。結果發現一些控件仍在引用舊名稱並導致此錯誤發生。

4

試試這個,選擇File's Owner,然後點擊「Connection Inspector」(右上方頂部的上方),你會看到所有的插座。尋找任何這樣的標誌(!),你會發現它在一個小圓圈上,這表明缺少插座,所有你需要做的就是正確連接或取出插座。

1

請檢查您的目標會員 選擇第一option.this可以幫助別人

1

我面臨同樣的問題。在我的情況下,我已經重命名.h文件中的文本標籤。所以在我的main.storyboard文件中有多個對該標籤的引用。一旦我刪除舊的參考我的代碼開始工作。

相關問題