Xcode报错NSUnknownKeyException:类不支持key signinbutton的键值编码
嘿,这个错误我之前也踩过坑!常规操作不管用的时候,大概率是遇到了一些隐性的连线或缓存问题,给你分享几个亲测有效的排查步骤:
检查界面文件的关联对象是否正确
打开你的XIB/Storyboard,选中那个出问题的按钮,看右侧Connections Inspector里的Outlet连线——有没有不小心把它连到了UIView本身,而不是对应的ViewController?另外也要确认ViewController的Custom Class没被误改成UIView(这种小失误真的很容易忽略)。手动清理界面文件的残留连线
Xcode的可视化连线有时候会有缓存,你删了可视化的连线,底层XML里可能还留着尾巴。右键点击界面文件,选Open As > Source Code,搜索signinbutton,把所有包含这个关键词的<connection>或<outlet>节点彻底删掉,再切回可视化模式重新连线试试。核对代码里的属性定义细节
再仔细检查一遍你的ViewController类:属性是不是正确声明了?比如Swift里得是@IBOutlet weak var signinbutton: UIButton!,Objective-C里是@property (nonatomic, weak) IBOutlet UIButton *signinbutton;。还要注意大小写,有没有把signinbutton写成SigninButton?如果是子类继承的VC,还要确认父类里没有同名属性冲突。清空Xcode的Derived Data
旧的编译缓存经常搞事情!打开Xcode > Settings > Locations,找到Derived Data的路径,把整个文件夹删掉,然后按Cmd+Shift+K清理项目,再重新编译运行。排查重复定义的情况
有没有可能界面里有两个同名按钮,或者代码里重复声明了signinbutton属性?这种情况会让Xcode搞混连线对象,仔细检查一遍界面控件名和代码里的属性。
如果这些都没用,那就试试新建一个干净的ViewController,重新拖按钮连线,再把旧VC的代码一点点迁过去——说不定是原VC文件本身损坏了。
内容的提问来源于stack exchange,提问作者esalberg

