Swift使用Core Data查询数据时报keypath not found in entity错误
Core Data查询报错排查方案
报错的核心原因是Food实体中不存在代码中引用的name键路径,可按以下步骤排查解决:
- 核对实体属性命名
Core Data的属性键名大小写敏感,先检查你Core Data模型中Food实体的属性是否确实命名为name,确认没有大小写拼写错误,也没有使用foodName、title等其他命名。 - 清理Xcode缓存重试
如果你近期修改过Food实体的属性配置,Xcode可能会缓存旧的模型文件导致属性识别异常,按Shift + Cmd + K快捷键清理构建文件夹后重新编译运行即可。 - 替换安全写法避免同类问题
不要使用硬编码字符串作为键名,改用KeyPath或者#keyPath语法,编译阶段就可以校验属性是否存在,避免运行时才触发崩溃:// 排序描述符改用KeyPath写法 let sortDescriptor = NSSortDescriptor(keyPath: \Food.name, ascending: false) // Predicate用#keyPath保证键名拼写正确 let userPredicate = NSPredicate(format: "%K == %@", #keyPath(Food.user), User.user!) let sortPredicate = NSPredicate(format: "%K == %@", #keyPath(Food.sort), "meal")
额外注意:顺便检查
user、sort两个键名和实体属性的匹配情况,避免解决当前问题后出现其他键不存在的报错。
内容的提问来源于stack exchange,提问作者Jins_1312
相关产品推荐
相关产品推荐

