这个类不是符合@IBInspectable编码的关键值

我在自定义视图上创build了一个@ IBDesignable来设置IB的一个属性。 但是我得到这个类不是关键值编码兼容,尽pipe我在我的class上有这个属性。

@IBDesignable class ExclusiveSelectorView: UIView { @IBInspectable var cellWidth: CGFloat? } 

无法在(Test.ExclusiveSelectorView)上设置(cellWidth)用户定义的检查属性:[setValue:forUndefinedKey:]:该类不是关键字cellWidth的关键字值编码。

在这里输入图像说明

这是我的课 在这里输入图像说明

您不能将基元定义为@IBInspectable的空@IBInspectable

当您尝试这样做,并为其中一个属性设置值时,您将在IBDesignable时间收到以下警告:

@IBDesignable类TestDesignable IB Designables:在“TestDesignable”实例上忽略用户定义的关键path“testInt”的运行时属性。 尝试设置其值时发生exception:[setValue:forUndefinedKey:]:此类不是密钥testInt的密钥值编码。

而在运行时,你会得到以下错误:

无法在(TestDesignable)上设置(testInt)用户定义的检查属性:[setValue:forUndefinedKey:]:此类不是关键值testIn的密码值兼容。

为了解决这个问题,把它从一个可选项改为非可选项,并给它一些零默认值。

无效:

 @IBDesignable class TestDesignable: UIView { @IBInspectable var testInt: Int? = nil // crash @IBInspectable var testFloat: CGFloat? = nil // crash @IBInspectable var testPoint: CGPoint? = nil // crash @IBInspectable var testColor: UIColor? = nil } 

有效:

 @IBDesignable class TestDesignable: UIView { @IBInspectable var testInt: Int = 0 @IBInspectable var testFloat: CGFloat = 0 @IBInspectable var testPoint: CGPoint = .zero @IBInspectable var testColor: UIColor? = nil }