swift @IBDesignable - @IBInspectable,类不符合键值编码

yvgpqqbh  于 2023-08-02  发布在  Swift
关注(0)|答案(5)|浏览(165)

当使用@IBDesignable类时,我突然遇到了一个奇怪的可重复的错误,@IBInspectable属性给出了以下警告:
Main.storyboard:警告:IB可指定:忽略“UIButton”示例上的键路径“test”的用户定义的运行时属性。尝试设置其值时遇到异常:[ setValue:forUndefinedKey:]:对于密钥测试,该类不是符合密钥值编码的。
要明确的是,这个警告只是Xcode中的一个问题,它可以很好地打包。还是很烦!

复制步骤

1.创建新项目
1.创建一个自定义的@IBDesignable UIButton子类,带有@IBInspectable String属性:

import UIKit

@IBDesignable
class TempButton: UIButton {
    @IBInspectable var test:String = ""
}

字符串
1.将一个Button拖到情节提要中的View Controller,并在Identity Inspector中给予自定义类“TempButton”。
1.现在“测试”属性应该出现在“临时按钮”属性的属性检查器中-在此字段中键入任何内容。
1.砰!出现上述警告。从字段中删除文本,警告将消失。
我已经尝试了几种解决方案-不同的变量名,使'test'属性为可选的,使用初始化器,到目前为止没有运气。
下面是问题的屏幕截图:
x1c 0d1x的数据

wljmcqd8

wljmcqd81#

我通过确保接口生成器“构建”没有任何错误来修复这个问题。以下是这意味着什么:
1.在Xcode的左侧面板中,转到Report Navigator(顶部的最后一个选项卡项)。
1.在“报告”列表中,在目标之后,您应该看到“接口生成器”。展开该项。
1.确保所有项目都没有错误(如红色X所示)。
1.如果您在此处发现错误,请选择它,您将看到有关该问题的更多详细信息。解决这个问题,清理和重建。
请注意,问题可能与您正在处理的文件无关。如果Interface Builder Build在构建有问题的文件之前失败,您将看到这些非常隐晦的警告。
(My原因是共享扩展目标错误地引用了AppIcon和SplashScreen资产目录。)

hfwmuf9z

hfwmuf9z2#

我遇到了同样的问题,我解决了它。打开脚本时:单击上方菜单中的【编辑器】。2-单击刷新所有视图。3-重新启动您的应用程序。4-构建。

qyyhg6bp

qyyhg6bp3#

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


的数据

2admgd59

2admgd594#

为了你自己好我希望你不像我一样愚蠢,但我刚刚花了2个小时寻找解决方案。在我的例子中,我有一个属性定义为指向BOOL的指针...奇怪的是,它给了我同样的错误。
我不得不改变:

@property (nonatomic) IBInspectable BOOL *randomProp;

字符串
致:

@property (nonatomic) IBInspectable BOOL randomProp;

idfiyjo8

idfiyjo85#

如果遇到这个问题,我的解决方案是重置视图的自定义类分配。以下是实现此目标的详细步骤:
1.在情节提要中,选择有问题的视图。
1.打开位于Xcode界面右侧的Inspector面板。
1.导航到“身份检查器”,它是“检查器”面板中的第四个选项卡。
1.在身份检查器中,您将看到一个标题为“自定义类”的部分。在这里,清除“Class”字段中的现有类名。
1.删除类后,通过将类名键入回“Class”字段来重新分配它。当你开始输入时,Xcode应该提供自动完成的建议。从此列表中选择您的班级。
这有效地重置了脚本视图与代码中相应类之间的链接,这应该可以解决“Designable Build Failed”错误。

相关问题