在 queryForTable() 中快速解析查询多个键

Posted

技术标签:

【中文标题】在 queryForTable() 中快速解析查询多个键【英文标题】:Parse query multiple key swift in queryForTable() 【发布时间】:2015-07-20 21:42:08 【问题描述】:

我使用 Parse 来管理我的数据库。

我有一个带有 searchBar 的 tableView。 效果很好。

我的查询功能如下:

override func queryForTable() -> PFQuery 
    var query = PFQuery(className: "students")
    if searchBar.text != "" 
        query.whereKey("prenom", containsString: searchBar.text.uppercaseString)
    
    query.orderByAscending("prenom")
    return query

这很好用。

但现在我想在我的研究中添加多个键,例如:

query.whereKey("prenom", containsString: searchBar.text.uppercaseString)
query.whereKey("nom", containsString: searchBar.text.uppercaseString)

但是这段代码是正常的:“我想要 searchBar.text IN prenom AND nom” 这不是我想要的。 我想搜索示例:“John”,这个结果必须是“prenom”中的“john”或“nom”中的“john”。

我不知道如何将带有多个键的 PFQuery 返回到查询中。

有人有想法吗?

【问题讨论】:

【参考方案1】:

要在 Parse 中执行 OR 查询,您需要使用 Compound Query 功能。您构造两个独立的查询,然后在PFQuery 上使用orQueryWithSubqueries 方法。以您为例...

override func queryForTable() -> PFQuery 
  var query: PFQuery!
  if searchBar.text != "" 
    var prenomQuery = PFQuery(className: "students")
    var nomQuery = PFQuery(className: "students")
    prenomQuery.whereKey("prenom", containsString: searchBar.text.uppercaseString)
    nomQuery.whereKey("nom", containsString: searchBar.text.uppercaseString)
    query = PFQuery.orQueryWithSubqueries([prenomQuery, nomQuery])
   else 
    query = PFQuery(className: "students")
  
  query.orderByAscending("prenom")
  return query

我不记得结果集是否是唯一的(假设有人在他们的 nom 和 prenom 字段中都有搜索文本),所以你应该检查一下。

【讨论】:

它适用于我的要求!如果我想使用多个关键字进行搜索,例如我想搜索 "Sarah Crosh" (firstname, lastname) 怎么办?所以我需要为每个单词创建查询... 您需要在查询中添加额外的 where 约束,例如 query.whereKey("firstname", equalTo: "Sarah") 然后 query.whereKey("lastname", equalTo: "Crosh")【参考方案2】:

我最后做的是在我的表中创建另一列并连接我所有可搜索的信息。

然后我做同样的事情,我在这个列中搜索我的 searchBar.text,包含字符串。

它工作得几乎完美,我发现的唯一问题是如果我想在我的新列中以字符串的相反顺序搜索。

【讨论】:

以上是关于在 queryForTable() 中快速解析查询多个键的主要内容,如果未能解决你的问题,请参考以下文章

queryForTable viewDidAppear、viewWillAppear 等不适用于子视图

在JavaScript中快速简便地解析查询字符串

用DOM解析XML ,用xpath快速查询XML节点

在 SQL/Hive 中解析/查询键值对

解析云代码查询不触发成功或错误

spring-data-jpa快速入门——简单查询