解析查询 - 不能处理多个whereKey:doesNt MatchKey:inQuiry

时间:2014-11-15 13:18:05

标签: ios iphone xcode parse-platform

我正在尝试这个

PFQuery *allDealsQuery = [Deal query];
PFRelation *favoritedDealsRelation = [user objectForKey:@"favoritedDeals"];
PFQuery *favoritedDealsQuery = [favoritedDealsRelation query];

PFRelation *redeemedDealsRelation = [user objectForKey:@"redeemedDeals"];
PFQuery *redeemedDealsQuery = [redeemedDealsRelation query];

[allDealsQuery whereKey:@"objectId" doesNotMatchKey:@"objectId" inQuery:favoritedDealsQuery];
//Parse does not support more than 2 where queries???
[allDealsQuery whereKey:@"objectId" doesNotMatchKey:@"objectId" inQuery:redeemedDealsQuery];

    [allDealsQuery findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
        if (!error) {
            onSuccess(objects);
        }
        else {
            onError(error);
        }
    }];

当我尝试使用两个查询时,答案与预期的不同。 那么我应该只使用一个doNotMatchKey查询吗?

1 个答案:

答案 0 :(得分:0)

尝试在复合查询上引用解析文档: https://parse.com/docs/ios_guide#queries-compound/iOS

复合查询 如果要查找与多个查询之一匹配的对象,可以使用orQueryWithSubqueries:方法。例如,如果你想找到有很多胜利或几场胜利的球员,你可以这样做:

PFQuery *lotsOfWins = [PFQuery queryWithClassName:@"Player"];
[lotsOfWins whereKey:@"wins" greaterThan:@150];

PFQuery *fewWins = [PFQuery queryWithClassName:@"Player"];
[fewWins whereKey:@"wins" lessThan:@5];
PFQuery *query = [PFQuery orQueryWithSubqueries:@[fewWins,lotsOfWins]];
[query findObjectsInBackgroundWithBlock:^(NSArray *results, NSError *error) {
  // results contains players with lots of wins or only a few wins.
}];