升级Xcode后跳转视频历史页面出现weekLabel键值编码不兼容错误
问题根因
this class is not key value coding-compatible for the key weekLabel是iOS Storyboard/XIB加载时的标准绑定错误:界面构建器(IB)中给视图控制器绑定了名为weekLabel的IBOutlet输出口,但是对应的ViewController类中没有声明这个属性,系统加载页面时找不到对应key就会触发崩溃。
旧版Xcode对这类不严谨的无效绑定容错性更高,升级后编译检查更严格就暴露了问题。结合你提到的两个页面布局高度相似、历史页面没有周数展示元素的背景,问题大概率是两类情况:要么是复制布局时把weekLabel的绑定也同步到了历史页面,要么是Storyboard中两个页面的自定义类/Storyboard ID绑定混淆,加载历史页时实际拿到了带weekLabel属性的当周页实例。
排查解决步骤
- 先确认代码侧逻辑:打开
ExercisesHistoryViewController的.swift文件,确认类中没有声明@IBOutlet weak var weekLabel: UILabel!相关属性,排除代码侧多声明/漏删的问题 - 清理Storyboard无效绑定:打开Main.storyboard,找到历史视频页对应的ViewController,点击左侧文档大纲里的黄色圆形ViewController图标,切换到右侧面板最末尾的「连接检查器」(箭头形状图标),查看Outlets分类下有没有
weekLabel的绑定项,如果有,点击项旁边的×删除无效绑定 - 核对自定义类绑定:还是在历史页ViewController的设置面板,切换到「身份检查器」(身份证形状图标),确认Custom Class栏填写的类名是
ExercisesHistoryViewController,没有误填为当周视频页的类名 - 核对Storyboard ID:确认历史页ViewController的Storyboard ID和当周页的ID没有重复,避免
instantiate方法取错控制器实例 - 清理缓存重新编译:依次按
Command+Shift+K清理构建产物、Command+Option+Shift+K清空Xcode全量缓存,之后重新运行测试
内容的提问来源于stack exchange,提问作者mistert69
相关产品推荐
相关产品推荐

