Swift   发布时间:2022-04-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了swift2 – 在Swift 2中使用谓词搜索数据库大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我在 Swift2中编写了一个(MaC)应用程序,它应该搜索具有特定主题的教师的Realm数据库.领域中教师对象的定义如下所示:

class Teacher: Object {
     var subjects = List<Subject>()
}

这个类非常复杂所以我删除了一些行…

这是应该过滤具有特定主题的教师数据库并仅返回教师姓名的函数(如String Array:[String]):

func getAllTeacherNamesForSubject(subject: String) -> [String] {
    // Open Database
    let realm = openRealmDatabase()

    // Or open it this way:
    // RLMRealm.setDefaultRealmPath("/Users/name/Data.realm")
    // var realm: Realm!
    // realm = try! Realm()

    // filter the Database with PreDicate
    let objects = realm.objects(Teacher).filter("!!! Need Help !!!",subject)
    // How can I filter the Database? I want to get all the Teachers for that subject

    // Make an Array of Objects
    let objectsArray = objects.toArray(Teacher) as [Teacher]

    // Return
    return ???
}

// This is the toArray extension.
// You may need it to use the snippet above
extension Results {
    func toArray<T>(ofType: T.TypE) -> [T] {
        var array = [T]()
        for var i = 0; i < count; i++ {
            if let result = self[i] as? T {
                array.append(result)
            }
        }
        return array
    }
}

所以问题是我不知道如何过滤数据库.

有谁可以帮助我吗?

@L_489_10@

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

NSPreDicate(format: "ANY subjects.name ==[c] %@",subjectName)

并将其插入过滤功能.由于您只想返回教师姓名,因此您不需要按照建议创建任何扩展名,而是使用本机swift映射方法

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 }
}

作为参,您可以找到一个很棒的cheatsheet on Realm’s website,它描述了支持的谓词语法的完整列表.

大佬总结

以上是大佬教程为你收集整理的swift2 – 在Swift 2中使用谓词搜索数据库全部内容,希望文章能够帮你解决swift2 – 在Swift 2中使用谓词搜索数据库所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。