iOS 如何优化数据库查询 Parse swift 4

标签 ios swift parse-platform swift4 parse-server

我有一个问题,简而言之,我有连接到解析服务器的搜索模块。

在这个数据库中,我有超过 50 个数据表,我在其中存储了一些数据,为了进行搜索,我使用了以下代码:

 func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
    searchBar.resignFirstResponder()
    searchResult.removeAll(keepingCapacity: false)
    answer.removeAll(keepingCapacity: false)
    tableView.reloadData()

    let firstQuery = PFQuery(className: "table1")
    firstQuery.whereKey("question", contains: searchBar.text)

    let seccondQuery = PFQuery(className: "table2")
    seccondQuery.whereKey("question", contains: searchBar.text)

    let query3 = PFQuery(className: "table3")
    query3.whereKey("question", contains: searchBar.text)

    let query4 = PFQuery(className: "table4")
    query4.whereKey("question", contains: searchBar.text)

    let queryArry = [firstQuery, seccondQuery, query3, query4]
    for query in queryArry {
        query.findObjectsInBackground { (result, error) in
            if let objects = result {
                for object in objects {
                    let question = object.object(forKey: "question") as! String
                    let answer = object.object(forKey: "answer1") as! String
                    self.answer.append(answer)
                    self.searchResult.append(question)

                }

                DispatchQueue.main.async {
                    self.tableView.reloadData()
                    self.resignFirstResponder()
                }
            }
        }

    }


}

如您所见,我有 4 个查询,以及一些我想改进的方法,因为每次我都不想复制这部分代码:

let firstQuery = PFQuery(className: "table1")
firstQuery.whereKey("question", contains: searchBar.text)

也许有人认为它有改进的可能?

最佳答案

If you don't want to copy this part of code

let firstQuery = PFQuery(className: "table1")
firstQuery.whereKey("question", contains: searchBar.text)

你可以这样做:

let query1 = PFQuery(className: "table1")
let query2 = PFQuery(className: "table2")
let query3 = PFQuery(className: "table3")
let query4 = PFQuery(className: "table4")
let queries = [query1, query2, query3, query4]

queries.forEach { $0.whereKey("question", contains: searchBar.text) }
queries.forEach { (query) in
    query.findObjectsInBackground()
}

代码看起来更紧凑

希望我的回答对你有帮助😊

关于iOS 如何优化数据库查询 Parse swift 4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52602798/

相关文章:

android - Android、iPhone、BlackBerry常用加解密算法

swift 与 double 的步伐是不可靠的

ios - CGRect 未应用

android - ParseInstallation.getCurrentInstallation().saveInBackground();不工作

iOS8.2 不播放来自 parse.com 应用程序的自定义警报声音

ios - 将 XCTestsmeasure() 限制为仅运行一次

ios - 如何测试 Firebase DataSnapshot 以模拟对象解析?

objective-c - 为什么在实现 NSCopying 时区域总是 nil?

ios - 如何将嵌入的 youtube 视频禁用自动播放到 WKWebView

javascript - 解析云代码循环仅经过第一个实例