Ios 使用Parse进行查询

Ios 使用Parse进行查询,ios,parse-platform,pfquery,Ios,Parse Platform,Pfquery,我想创建一个查询,如果两个字段中存在某些内容,它将检入一个特定的类(我想显示每个字段的含义是与否和) 这就是我所做的,但它不起作用(根据我看到的一些例子) 我该怎么做 **我想在我的查询中获得包含所有字段(姓名、城市、描述)的searchTeam的所有结果 谢谢如果我正确理解了您的问题,您需要检查您的搜索词是否在姓名、城市或描述中。方法是: PFQuery * nameQuery = [PFQuery queryWithClassName: self.parseClassName]; [name

我想创建一个查询,如果两个字段中存在某些内容,它将检入一个特定的类(我想显示每个字段的含义是与否和) 这就是我所做的,但它不起作用(根据我看到的一些例子)

我该怎么做

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


谢谢

如果我正确理解了您的问题,您需要检查您的搜索词是否在姓名、城市或描述中。方法是:

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”和keyExists:@“city”和description包含searchTerm

如果我正确理解了您的问题,您需要检查您的searchTerm是否在name、city或description中。方法是:

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”和keyExists:@“city”和description包含searchTerm

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

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

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

   PFQuery *query = [PFQuery queryWithClassName: self.parseClassName];
   [query whereKey:@"name" equal:@"someName"];
   [query whereKey:@"city" equal:@"someCity"];
   [query whereKey:@"description" containsString:searchTerm];
这将作为原始的所需语句进行计算。

您希望:

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搜索是非常有限的,如果您希望进行大量搜索,那么这可能不是最可伸缩的选项。对于轻量级工作或偶尔进行搜索的应用程序,这应该很好。

您希望这样:

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搜索是非常有限的,如果您希望进行大量搜索,那么这可能不是最可伸缩的选项。对于轻量级工作或偶尔搜索的应用程序,这应该是好的。

我认为这是不正确的,这与or查询相同(正如方法名称所述…),他之前所做的是和。我写的是OR,我认为这是不正确的,这与OR查询相同(方法的名称说明…),他以前做的是和。我写的是或。