迁移至新电脑后Swift代码出现Unable to dequeue a cell with identifier cellID错误
Unable to dequeue a cell with identifier cellID错误 我之前迁移项目到新电脑时也碰到过完全一样的问题!代码明明和旧电脑上一模一样,却突然报这个错,大概率是Xcode的本地缓存或者界面文件关联出了问题,给你几个亲测有效的排查步骤:
核对Storyboard/XIB里的Cell标识符
打开对应的TableView所在的Storyboard或XIB,找到那个复用的Cell,在Attributes Inspector里仔细检查Identifier字段是不是完全等于你代码里的cellID——注意大小写、有没有多余空格!有时候迁移后Xcode的界面渲染会有小bug,看起来没问题但实际标识符不匹配。彻底清理Xcode缓存和Derived Data
这是解决这类迁移问题最常用的办法:- 完全关闭Xcode
- 打开终端,执行命令:
rm -rf ~/Library/Developer/Xcode/DerivedData - 重新打开项目,按下
Cmd+Shift+K清理Build Folder,再按Cmd+B重新编译
检查Cell的类关联是否正确
选中那个Cell,切换到Identity Inspector,确认Class选项是不是你要使用的Cell类(如果是自定义Cell的话),有没有变成空或者错误的系统类?迁移过程中偶尔会出现界面文件的类关联丢失的情况。确认Cell注册逻辑
如果你的Cell是纯代码创建的,一定要在viewDidLoad里加上注册代码:tableView.register(UITableViewCell.self, forCellReuseIdentifier: "cellID")要是用Storyboard/XIB创建的Cell,就不需要手动注册,但必须保证界面里的Cell标识符和代码里完全一致。
如果以上方法都没用,试试删除项目的xcuserdata文件夹:右键点击你的.xcodeproj文件选择「显示包内容」,删掉里面的xcuserdata文件夹,然后重新打开项目——这个文件夹存的是本地用户配置,迁移后很容易出现冲突。
内容的提问来源于stack exchange,提问作者user9585671

