2015-10-15 95 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

相关问题