如何使用自定义Parse查询来查找whereKey:doesNotContainString:?

时间:2014-02-18 06:13:43

标签: ios iphone objective-c parse-platform

目前,我有一个Game类表,其中包含一个名为currentTurnPlayer的属性。对于查询,我有兴趣获取所有game个对象,其中currentTurnPlayer的名称等于我的self.currentUser.username

换句话说,我坚持尝试与默认的Parse'query method whereKey:containsString:做相反的操作,并且仅检索密钥不包含字符串{{1}的对象}。我怎么能做到这一点?谢谢!

2 个答案:

答案 0 :(得分:2)

使用whereKey:notEqualTo:应该可以解决问题。但是,如果您没有将确切名称与确切名称相匹配(即允许用户输入搜索字词),那么这显然不会奏效。

在这种情况下,您希望使用whereKey:matchesRegex:我不是正则表达式专家,但这是一个例子。

[query whereKey:@"currentTurnPlayer" matchesRegex:[NSString stringWithFormat:@"(?i:^.*%@.*$)", playerName]];

答案 1 :(得分:2)

我建议将PFQuery与您自己的谓词一起使用。

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"currentTurnPlayer != %@",
                          self.currentUser.username];
PFQuery *query = [PFQuery queryWithClassName:[Game parseClassName]
                                   predicate:predicate];

...然后照常执行查询。

Parse不支持所有谓词语句,但它支持基本语句,包括==!=