9

使用 @IBDesignable 类时,我突然遇到一个奇怪且可重现的错误,@IBInspectable 属性给出以下警告:

Main.storyboard:警告:IB Designables:忽略“UIButton”实例上关键路径“test”的用户定义运行时属性。尝试设置其值时遇到异常:[ setValue:forUndefinedKey:]:此类不符合键测试的键值编码。

需要明确的是,这个警告只是 Xcode 中的一个问题,它封装得很好。还是很烦!

重现步骤

  1. 创建新项目
  2. 使用 @IBInspectable String 属性创建自定义 @IBDesignable UIButton 子类:

    import UIKit
    
    @IBDesignable
    class TempButton: UIButton {
        @IBInspectable var test:String = ""
    }
    
    1. 将 Button 拖到情节提要中的 View Controller 中,并在 Identity Inspector 中为其提供自定义类“TempButton”。
    2. 现在“测试”属性应该出现在“临时按钮”属性的属性检查器中 - 在此字段中输入任何内容。
    3. 砰!出现上述警告。从字段中删除文本,警告就会消失。

我尝试了几种解决方案 - 不同的变量名称,使“测试”属性成为可选,使用初始化程序,到目前为止没有运气。

这是问题的屏幕截图:

在此处输入图像描述

4

4 回答 4

9

我通过确保 Interface Builder“构建”没有任何错误来解决这个问题。这是什么意思:

  1. 在 Xcode 的左侧面板中,转到 Report Navigator(顶部的最后一个选项卡项。)
  2. 在 Report 列表中,在您的目标之后,您应该会看到“Interface Builder”。展开该项目。
  3. 确保所有项目都没有错误(如红色 X 所示)。
  4. 如果您在此处发现错误,请选择它,您将看到问题的更多详细信息。修复该问题,清理并重建。

请注意,该问题可能与您正在使用的文件无关。如果 Interface Builder Build 在构建相关文件之前失败,您将看到这些非常神秘的警告。

(我的原因最终是共享扩展目标错误地引用了 AppIcon 和 SplashScreen 资产目录。)

于 2016-01-12T22:16:18.170 回答
8

我面临同样的问题,我解决了它。当您打开故事板时: 1-单击上方菜单上的编辑器。2 单击刷新所有视图。3-重新启动您的应用程序。4-构建。

于 2016-11-25T08:03:58.443 回答
1

我有一个类似的问题,但我没有在上面的答案中找到解决方案。在我的情况下,在身份检查器中错误地添加了一个额外的 keyPath:

在此处输入图像描述

于 2020-04-21T07:29:28.087 回答
0

为了你好,我希望你不要像我一样愚蠢,但我只是花了 2 个小时寻找解决方案。在我的情况下,我有一个属性定义为指向 BOOL 的指针......奇怪的是它给了我同样的错误。

我不得不改变:

@property (nonatomic) IBInspectable BOOL *randomProp;

至:

@property (nonatomic) IBInspectable BOOL randomProp;
于 2020-05-21T21:30:12.663 回答