Swift CoreData谓词

时间:2017-06-07 15:51:46

标签: ios swift core-data predicate

我对swift编程很陌生,最近开始尝试使用持久数据。我的搜索请求谓词有问题。

我的(测试)应用程序是一个简单的成绩管理器。它具有与Course个实体具有一对多关系的Grade个实体。当我想在tableview中显示我的成绩时,我想获取与特定课程有关系的所有成绩。我在我的DatabaseController类(我用来管理我的CoreData)中为此创建了一个函数,但是当你实际获取此函数的返回值时,它总是为空。

class func returnFetchRequestGrades(course: Course) -> NSFetchRequest<Grade>{

    let fetchRequestGradesInCourse: NSFetchRequest<Grade> = Grade.fetchRequest()
    let predicateCourse = NSPredicate(format: "%@ == %@", "c.course.courseName", course)
    fetchRequestGradesInCourse.predicate = predicateCourse

    return fetchRequestGradesInCourse
}

我该怎么做才能解决这个问题?

当我使用以下解决方法时,它确实有效:我创建了一个没有谓词的提取请求。我取结果。这给了我一份所有成绩的清单。然后我(使用for-loop)挑选出所有正确的成绩。

1 个答案:

答案 0 :(得分:0)

courseName是Grade实体的值吗?如果是这样,您的谓词可能出错,请尝试:

let predicateCourse = NSPredicate(format: "courseName == %@", course)