我有以下代码行:
[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.'
如果我注释此行代码,它将起作用。我只想使用setValue:forKey函数通过UIButton传递一些“元”信息。
有人可以向我解释发生了什么吗?谢谢!
最佳答案
通过关联的对象“附加一些值到按钮”是最简单的。您可以为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));
}
您可以阅读very good article on NSHipster,其中涉及关联对象的使用。
请注意,您实际上想做的任何事情,都可以通过对按钮进行子类化或将值存储在其他位置来轻松完成。