You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何判断CoreData中是否存在指定参数的实体?

问题解决:CoreData查询崩溃(无实体时无法执行获取请求)

崩溃原因是你创建的NSFetchRequest没有正确关联对应的CoreData实体,CoreData无法识别要查询的目标实体,因此抛出错误。

修正后的代码(推荐写法)

利用CoreData实体类自动生成的fetchRequest()方法,这种方式类型安全,能避免实体名称拼写错误:

func isThereFlashCardAccData(cardName: String) -> Bool {
    let fR = FlashCardAccuracy.fetchRequest()
    fR.predicate = NSPredicate(format: "cardName == %@", cardName)
    
    do {
        let count = try viewContext.count(for: fR)
        return count > 0
    } catch let error as NSError {
        print("Error: \(error.localizedDescription)")
        return false
    }
}

另一种手动指定实体的写法

如果需要手动指定实体名称,注意名称必须和CoreData模型文件(.xcdatamodeld)中的实体名称完全一致(大小写敏感):

func isThereFlashCardAccData(cardName: String) -> Bool {
    let fR = NSFetchRequest<FlashCardAccuracy>(entityName: "FlashCardAccuracy")
    fR.predicate = NSPredicate(format: "cardName == %@", cardName)
    
    do {
        let count = try viewContext.count(for: fR)
        return count > 0
    } catch let error as NSError {
        print("Error: \(error.localizedDescription)")
        return false
    }
}

额外注意事项

  • 确保FlashCardAccuracy是CoreData自动生成的实体类,或你手动创建的类已正确关联模型中的实体
  • 即使实体中没有数据,只要请求正确关联实体,count(for:)会返回0,不会崩溃

内容的提问来源于stack exchange,提问作者mzm0227

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 12:13:19