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

Posted

技术标签:

【中文标题】iOS 如何优化数据库 Parse swift 4 的查询【英文标题】:iOS How to optimized querys for data base Parse swift 4 【发布时间】:2018-10-02 06:03:44 【问题描述】:

我有一个问题,如果在较短的时间内我有连接到解析服务器的搜索模块。

在这个数据库中,我有超过 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)

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

【问题讨论】:

【参考方案1】:

如果你不想复制这部分代码

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 的查询的主要内容,如果未能解决你的问题,请参考以下文章

iOS 如何在少数数据表中搜索数据 Parse swift 4

IOS 如何使用 Parse Swift 获取每个用户的个人资料图片

如何为经典的帖子和评论模型构建 Parse 数据模型? (使用 iOS、Swift、Parse)

如何将 iOS Swift 应用程序指向 Amazon Web Services 上的 Parse Server?

在 Swift (iOS) 中使用水平滑动浏览 Parse.com 中的数据

如何将 Mailchimp api 集成到我的 iOS Swift 应用程序中