首页 > 解决方案 > 在核心数据获取请求中忽略谓词

问题描述

谁能告诉我为什么下面的 questionFetch 谓词被忽略,而返回的 questionResults.count 是整个数据集中的行数?数据集中只有 2 行 questionType 等于 0,这应该是唯一返回的两行。而是返回所有 88 行数据。

let questionFetch: NSFetchRequest<Question> = Question.fetchRequest()
questionFetch.predicate = NSPredicate(format: "%K == %i”,
    #keyPath(Question.questionType), currentQuestionType)
let questionResults = try 
    modelController.coreDataStack.managedContext.fetch(questionFetch)
print("questionResults.count: ", questionResults.count)

请注意,我还尝试在比较中使用硬编码值,以确保问题不是由于 currentQuestionType 变量中的值不正确造成的。

questionFetch.predicate = NSPredicate(format: "%K == 0”, 
    #keyPath(Question.questionType))

然而,下面的choiceFetch 谓词具有几乎相同的逻辑,适当地限制了结果。

let choiceFetch: NSFetchRequest<Choice> = Choice.fetchRequest()
choiceFetch.predicate = NSPredicate(format: "%K == %i", 
    #keyPath(Choice.questionID), currentQuestionID)
let choiceResults = try managedContext.fetch(choiceFetch)
print("choiceResults.count: ", choiceResults.count)

任何想法,将不胜感激。

标签: core-datapredicatensfetchrequest

解决方案


推荐阅读