UICollectionView自定义Cell报错:setValue:forUndefinedKey: 键值编码不兼容
在为UICollectionView的自定义Cell绑定图片时,触发以下错误:
[<UICollectionViewCell 0x14fd06a80> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key。
已在界面编辑器中正确关联Cell的IBOutlet,无警告提示,但问题仍存在。
自定义Cell代码:
#import <UIKit/UIKit.h> NS_ASSUME_NONNULL_BEGIN @interface CollectionViewCell : UICollectionViewCell @property (nonatomic, weak) IBOutlet UILabel *maskName3; @property (nonatomic, weak) IBOutlet UIImageView *maskImage; @end NS_ASSUME_NONNULL_END
界面构建器设置截图:

这个错误本质是系统尝试向不存在的key赋值,结合你的场景,按以下步骤排查:
确认Cell注册/关联的类正确
若通过代码注册Cell,确保使用自定义的CollectionViewCell类而非默认的UICollectionViewCell,示例代码:[self.collectionView registerClass:[CollectionViewCell class] forCellWithReuseIdentifier:@"CollectionViewCell"];若用Storyboard/XIB创建Cell,重新选中Cell确认Class属性确实设置为
CollectionViewCell(XIB缓存可能导致显示与实际不符)。清理无效的IBOutlet绑定残留
右键点击自定义Cell的类文件,检查所有关联的IBOutlet,删除多余或无效的绑定;也可打开XIB/Storyboard的源代码(右键文件→Open As→Source Code),搜索相关key(如maskImage),删除重复或无效的绑定节点后重新关联。核对复用标识一致性
确保collectionView:cellForItemAtIndexPath:方法中使用的复用标识,与界面编辑器中设置的完全一致(截图中标识为CollectionViewCell),标识不匹配会导致系统创建默认UICollectionViewCell实例,无法识别自定义属性。清理缓存并重建项目
执行Product → Clean Build Folder,重启Xcode后重新运行项目,Xcode缓存导致的类信息不匹配问题常能通过此方法解决。
内容的提问来源于stack exchange,提问作者Jobalisk

