Objective c 如何使用Parse中的查询检查两个不同字段中是否存在值?
我需要在parse中对一个对象进行查询,以查看两个字段中是否有一个包含值。该值是PFUser对象。我想我需要某种形式的或声明,但我不知道怎么做 这是我到目前为止掌握的代码Objective c 如何使用Parse中的查询检查两个不同字段中是否存在值?,objective-c,parse-platform,Objective C,Parse Platform,我需要在parse中对一个对象进行查询,以查看两个字段中是否有一个包含值。该值是PFUser对象。我想我需要某种形式的或声明,但我不知道怎么做 这是我到目前为止掌握的代码 PFQuery *query = [PFQuery queryWithClassName:@"GameTradeObject"]; [query whereKey:@"region" equalTo:[NSNumber numberWithInt:region]]; [query whereKey:@"
PFQuery *query = [PFQuery queryWithClassName:@"GameTradeObject"];
[query whereKey:@"region" equalTo:[NSNumber numberWithInt:region]];
[query whereKey:@"fromUser" equalTo:[PFUser currentUser]];
[query whereKey:@"toUser" equalTo:[PFUser currentUser]];
[query includeKey:@"fromUser"];
[query includeKey:@"fromVillage"];
[query includeKey:@"toUser"];
[query includeKey:@"toVillage"];
[query findObjectsInBackgroundWithBlock:^(NSArray *PUObjects, NSError *error) {
if (!error) {
我需要知道当前用户对象是否存在于fromUser或toUser字段中。我认为这可能必须使用NSPredicate来完成,但我不知道如何构建语句。您可以使用
[PFQuery或querywithsubquerys:@[query1,query2]]
组合两个查询
PFQuery *query1 = [PFQuery queryWithClassName:@"GameTradeObject"];
[query1 whereKey:@"region" equalTo:[NSNumber numberWithInt:region]];
[query1 whereKey:@"fromUser" equalTo:[PFUser currentUser]];
PFQuery *query2 = [PFQuery queryWithClassName:@"GameTradeObject"];
[query2 whereKey:@"region" equalTo:[NSNumber numberWithInt:region]];
[query2 whereKey:@"toUser" equalTo:[PFUser currentUser]];
PFQuery *query = [PFQuery orQueryWithSubqueries:@[query1, query2]];
[query includeKey:@"fromUser"];
[query includeKey:@"fromVillage"];
[query includeKey:@"toUser"];
[query includeKey:@"toVillage"];
[query findObjectsInBackgroundWithBlock:...
另一个通常执行速度更快的选项是将两个用户存储在一个数组中。你可以考虑:
PFQuery *query = [PFQuery queryWithClassname:@"GameTradeObject"];
// array equalTo string returns all objects where the array contains the string
[query whereKey:@"users" equalTo:PFUser.currentUser];
[query includeKey:@"users"];
[query includeKey:@"villages"];
[query findObjectsInBackgroundWithBlock:...];
您可以简单地按照下面的方式实现
PFQuery *query1 = [PFQuery queryWithClassName:@"GameTradeObject"];
[query1 whereKey:@"fromUser" equalTo:[PFUser currentUser]];
[query1 whereKey:@"region" equalTo:[NSNumber numberWithInt:region]];
PFQuery *query2 = [PFQuery queryWithClassName:@"GameTradeObject"];
[query2 whereKey:@"toUser" equalTo:[PFUser currentUser]];
[query2 whereKey:@"region" equalTo:[NSNumber numberWithInt:region]];
PFQuery *query = [PFQuery orQueryWithSubqueries:@[query1, query2]];
而且您不需要使用第二次includeKey,因为您在query1和query2上筛选了fromUser和toUser列