PFQuery约束 - 排除子查询

时间:2014-07-20 14:48:01

标签: ios parse-platform pfquery

我有一张名为" match"的表格。这个表有几列string类型。 我试图创建一个查询字符串值的查询" undefined"在列"播放器2"。这没有问题。当我查询我得到结果时。

但是我想添加一个约束,以便它排除当前用户的facebook id与列#34; player1"的匹配对象。我已将id存储在PFUser对象中,以便我可以轻松检索它。

我正在创建一个随机播放器匹配系统,其中查询检查匹配表中的空缺位置"播放器2"柱。如果它"未定义"我知道比赛中有一个空位,玩家可以加入。

然而,它需要排除当前玩家之前开始的比赛。否则它将加入当前玩家自己开始的比赛。

//check for objects that match the string "undefined"
PFQuery *query1 = [PFQuery queryWithClassName:@"match"];
[query1 whereKey:@"player2" containsString:@"UNDEFINED"];

//AND constraint to exclude the match of query1 if the current user id matches
PFQuery *query2 = [PFQuery queryWithClassName:@"match"];
[query2 whereKey:@"player1" notEqualTo:[[PFUser currentUser] objectForKey@"fbId"]];


PFQuery *mainQuery = [PFQuery orQueryWithSubqueries:@[query1,query2]];

1 个答案:

答案 0 :(得分:1)

您的player1和player2 cols是包含用户ID的字符串。我认为这会导致其他问题,但你仍然可以按照以下方式进行查询......

NSString *userId = [PFUser currentUser].objectId;
NSPredicate *predicate = [NSPredicate predicateWithFormat:
                          @"(player1 = 'UNDEFINED') AND (player2 != %@)", userId];
PFQuery *query = [PFQuery queryWithClassName:@"match" predicate:predicate];

编辑 - 我将上面的fbId更改为用户的对象ID。这就是你可能存储在播放器字符串col中的内容。正是这种混乱使得存储字符串(而不是指针)成为设计的一个问题。