使用Parse查询

时间:2013-09-20 19:35:07

标签: ios parse-platform pfquery

我想创建一个查询,如果2个字段中存在某些内容,将检查特定的类(我希望显示每个字段的含义,而不是AND) 这就是我所做的,但它不起作用(基于我看到的一些例子)

    PFQuery *query = [PFQuery queryWithClassName: self.parseClassName];
   [query whereKeyExists:@"name"];  //this is based on whatever query you are trying to accomplish
    [query whereKeyExists:@"city"]; //this is based on whatever query you are trying to accomplish
    [query whereKey:@"description" containsString:searchTerm];

我应该怎么做?

**我想在我的查询中获取包含所有字段(名称,城市,描述)中的searchTeam的所有结果

由于

3 个答案:

答案 0 :(得分:3)

这个问题的答案很简单,只需要将多个whereKey方法调用添加到同一个查询对象中。例如:

   PFQuery *query = [PFQuery queryWithClassName: self.parseClassName];
   [query whereKey:@"name" equal:@"someName"];
   [query whereKey:@"city" equal:@"someCity"];
   [query whereKey:@"description" containsString:searchTerm];

这将评估为原始的期望陈述。

答案 1 :(得分:1)

如果我理解你的问题,你想检查你的searchTerm是否在名称,城市或描述中。这样做的方法是:

PFQuery * nameQuery = [PFQuery queryWithClassName: self.parseClassName];
[nameQuery whereKey:"name" containsString:searchTerm];
PFQuery * cityQuery = [PFQuery queryWithClassName: self.parseClassName];
[nameQuery whereKey:"city" containsString:searchTerm];
PFQuery * descriptionQuery = [PFQuery queryWithClassName: self.parseClassName];
[nameQuery whereKey:"description" containsString:searchTerm];

PFQuery * query = [PFQuery orQueryWithSubqueries:@[nameQuery, cityQuery, descriptionQuery]];

这将从查询数组中创建复合或查询。通过向同一查询添加更多约束,您之前所做的与编写AND查询相同。

IE:keyExists:@“name”AND keyExists:@“city”AND description CONTAINS searchTerm

答案 2 :(得分:0)

你想要这个:

NSString *className = @"YourParseClassName";
NSString *searchTerm = @"YourSearchTerm";
PFQuery *nameQuery = [PFQuery queryWithClassName:className];
[nameQuery whereKey:@"name" containsString:searchTerm];
PFQuery *cityQuery = [PFQuery queryWithClassName:className];
[cityQuery whereKey:@"city" containsString:searchTerm];
PFQuery *descriptionQuery = [PFQuery queryWithClassName:className];
[descriptionQuery whereKey:@"description" containsString:searchTerm];

PFQuery *allQuery = [PFQuery orQueryWithSubqueries:@[nameQuery, cityQuery, descriptionQuery]];
[allQuery findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
    if (!error) {
        NSLog(@"Found objects: %@", objects);
    } else {
        NSLog(@"Received error: %@", error);
    }
}];

这样,您可以创建三个单独的查询,然后将它们组合成一个更大的查询,以便一次返回所有对象。

但请记住,Parse Regex搜索非常有限,如果您想要进行大量搜索,这可能不是最具扩展性的选项。对于轻量级工作或偶尔搜索的应用程序,这应该没问题。