我想创建一个查询,如果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的所有结果
由于
答案 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搜索非常有限,如果您想要进行大量搜索,这可能不是最具扩展性的选项。对于轻量级工作或偶尔搜索的应用程序,这应该没问题。