iOS 如何优化数据库 Parse 的查询 swift 4
iOS How to optimized querys for data base Parse swift 4
我有一个问题,简而言之,我有连接到解析服务器的搜索模块。
并且在这个数据库中我有 超过 50 个数据 table 我在其中存储了一些数据,并且为了搜索我使用这个代码:
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 { [=11=].whereKey("question", contains: searchBar.text) }
queries.forEach { (query) in
query.findObjectsInBackground()
}
代码看起来更紧凑
希望我的回答对您有所帮助
我有一个问题,简而言之,我有连接到解析服务器的搜索模块。
并且在这个数据库中我有 超过 50 个数据 table 我在其中存储了一些数据,并且为了搜索我使用这个代码:
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 { [=11=].whereKey("question", contains: searchBar.text) }
queries.forEach { (query) in
query.findObjectsInBackground()
}
代码看起来更紧凑
希望我的回答对您有所帮助