Swift2 Swift 2中带谓词的领域搜索数据库

Swift2 Swift 2中带谓词的领域搜索数据库,swift2,realm,predicate,Swift2,Realm,Predicate,我在Swift2中编写了一个(Mac)应用程序,它应该搜索一个有特定主题的教师领域数据库。领域中教师对象的定义如下所示: class Teacher: Object { var subjects = List<Subject>() } 所以问题是我不知道如何过滤数据库 有人能帮我吗?要筛选与特定值有关系的对象,或者在您的情况下,要筛选主题具有特定名称的教师,可以使用此谓词进行不区分大小写的搜索: NSPredicate(format: "ANY subjects.name

我在Swift2中编写了一个(Mac)应用程序,它应该搜索一个有特定主题的教师领域数据库。领域中教师对象的定义如下所示:

class Teacher: Object {
     var subjects = List<Subject>()
}
所以问题是我不知道如何过滤数据库


有人能帮我吗?

要筛选与特定值有关系的对象,或者在您的情况下,要筛选主题具有特定名称的教师,可以使用此谓词进行不区分大小写的搜索:

NSPredicate(format: "ANY subjects.name ==[c] %@", subjectName)
只需将其插入过滤器功能。由于您只想返回教师姓名,因此不需要按照建议创建任何扩展名,而是使用本机swift
map
方法:

func getAllTeacherNamesForSubject(subjectName: String) -> [String] {
    let realm = openRealmDatabase
    let predicate = NSPredicate(format: "ANY subjects.name ==[c] %@", subjectName)

    return realm.objects(Teacher).filter(predicate).map { $0.name }
}

作为参考,您可以找到一个很好的例子来描述支持的谓词语法的完整列表。

感谢这对我的帮助。我尝试了一些其他谓词,但没有任何效果。
func getAllTeacherNamesForSubject(subjectName: String) -> [String] {
    let realm = openRealmDatabase
    let predicate = NSPredicate(format: "ANY subjects.name ==[c] %@", subjectName)

    return realm.objects(Teacher).filter(predicate).map { $0.name }
}