2015-10-15 30 views
9

使用@IBDesignable上課的時候,我突然有一種奇怪的和可重複的錯誤,@IBInspectable屬性賦予以下警告:@IBDesignable - @IBInspectable,類不是鍵值編碼兼容

主。故事板:警告:IB Designables:忽略用戶定義的關鍵路徑「runtime」的運行時屬性對「UIButton」實例。嘗試設置其值時發生異常:[setValue:forUndefinedKey:]:此類不是密鑰測試的密鑰值編碼。

要清楚這個警告只是Xcode的一個問題,它包裝很好。仍然很煩人!

步驟來重現

  1. 創建新項目
  2. 創建自定義@IBDesignable的UIButton亞類中,有@IBInspectable String屬性:

    import UIKit 
    
    @IBDesignable 
    class TempButton: UIButton { 
        @IBInspectable var test:String = "" 
    } 
    
  3. 將一個按鈕拖到故事板中的視圖控制器中,並在Identity Inspector中爲其指定自定義類「TempButton」。
  4. 現在'Test'屬性應該出現在'Temp Button'屬性的屬性檢查器中 - 在該字段中輸入任何內容。
  5. Bam!出現上述警告。從字段中刪除文本,並且警告消失。

我已經嘗試了幾種解決方案 - 不同的變量名,使「測試」財產可選的,使用一個初始化,至今沒有運氣。

這是問題的一個屏幕截圖:

enter image description here

+0

非常有趣,我不能重現這個問題。我確實如你所說。沒有警告。你使用的是什麼版本的Xcode?你是否記得先建立應用程序?您是否嘗試重新啓動計算機(有助於在頭部側面碰撞Xcode)? – matt

+0

我在頭部側面砸了Xcode(即重新啓動!),並且我已經在當前版本的Xcode(7.0.1)和beta(7.1 beta 3)上嘗試過了,沒有運氣。感謝您的關注,有趣的是這不會發生在您身上。 –

+0

已添加屏幕截圖以幫助診斷問題,如果其他人無法複製。 –

回答

9

我通過確保界面生成器「生成」沒有任何錯誤,解決了這個問題。這是什麼意思:

  1. 在Xcode中的左側窗格中,轉到報告導航(最後一個選項卡項目在頂部)
  2. 在Reporst列表中,你的目標後,你應該看到「界面生成器「。展開該項目。
  3. 確保沒有任何項目有錯誤(由紅色X指定)。
  4. 如果您在這裏發現錯誤,請選擇它,您將看到更多的問題細節。解決這個問題,清理並重建。

注意的問題,如果可能無關到你工作的文件,它看來,如果它得到的建立文件的問題之前,Interface Builder的構建失敗,你會看到這些非常神祕的警告。

(我的事業結束了一個共享擴展目標引用不正確的APPICON和閃屏資產目錄。)

+0

Gah!這意味着我必須將@available插入特定於iOS9 +的類中,並處理舊版本。爲了正確加載Storyboard加載了很多工作。 WTH。 – nekonari

+5

關閉Xcode。清除DerivedData文件夾「/Users/..../Library/Developer/Xcode/DerivedData」並重新構建。 –

7

我面臨同樣的問題,我解決它。 當您打開故事板時: 單擊上一菜單上的編輯器。 雙擊刷新全部視圖。 3重新啓動您的應用程序。 4生成。

+1

可以證實這在某些情況下有效.Xcode 8.2.1 – 0000101010

+0

這也適用於我在8.2.1。它發生在我身上,當我最近離線工作以節省電池時,我關閉了自動刷新視圖,所以也許問題來自於此,並且最近沒有刷新視圖。 – Natalia

相關問題