Ios UIButton此类与密钥的键值代码不兼容

Ios UIButton此类与密钥的键值代码不兼容,ios,uibutton,storyboard,Ios,Uibutton,Storyboard,我有以下代码行: [self.someBtn setValue:@"some-value" forKey:@"some-key"]; 其中,someBtn是从故事板绑定的。 问题是我得到了这个错误: *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<UIButton 0x137e7deb0> setValue:forUndefinedKey:]: this class

我有以下代码行:

[self.someBtn setValue:@"some-value" forKey:@"some-key"];
其中,
someBtn
是从故事板绑定的。 问题是我得到了这个错误:

*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<UIButton 0x137e7deb0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key some-key.'
***由于未捕获的异常“NSUnknownKeyException”而终止应用程序,原因:“[setValue:forUndefinedKey:]:此类不符合密钥的键值编码。”
如果我对这行代码进行注释,它就可以工作。我只想使用setValue:forKey函数通过UIButton传递一些“meta”信息


有人能给我解释一下发生了什么事吗?谢谢大家!

您不能使用UIButton传递任何信息。您只能在UIButton中将int设置为标记,如下所示-

self.someBtn.tag = 1;
通过关联对象“给按钮附加一些值”是最容易的。您可以为
UIButton
编写一个扩展名来实现这一点

@interface UIButton (AssociatedObject)

@property (nonatomic, strong) id associatedObject;

@end

@implementation UIButton (AssociatedObject)
@dynamic associatedObject;

- (void)setAssociatedObject:(id)object {
     objc_setAssociatedObject(self, @selector(associatedObject), object, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}

- (id)associatedObject {
    return objc_getAssociatedObject(self, @selector(associatedObject));
}
您可以使用关联对象来阅读封面


请注意,无论您试图实际执行什么操作,都可以通过将按钮子类化或将值存储在其他位置来轻松完成。

“我只想通过UIButton传递一些“元”信息”-为什么?你想达到什么目标?有一种更好的方法可以实现您的目标。此问题与iBooter有关。请检查您的按钮iBootlet您的问题不清楚可能重复的
setValue forKey
是一种通用的键值编码方法,允许按键访问属性setter和getter。如果setter失败,则基础属性为只读。我想使用setValueforKey,但感谢您的回答和完整的回答:UIButtons与键值兼容,而例如,UIView在通用键上与键值不兼容,因此UIButtons不允许设置自定义键/值。在我的例子中,UIButton没有任何名为“some key”的属性。