【问题标题】:How can i get AND clause in parse ios如何在解析 ios 中获取 AND 子句
【发布时间】:2014-03-13 08:33:06
【问题描述】:

我使用这个link 作为指导,但我可以弄清楚如何使用 AND 子句进行解析。它只在示例代码中定义了 OR 子句。

如果我要从 SQL 语句转换它,它看起来像这样......

SELECT * FROM RemittanceTable WHERE beneCode = 'code' AND remittanceAmount = 500.00

例如在这段代码中,我想在读取数据之前检查代码和数量是否正确。但它使用 OR 子句验证

PFQuery *beneCodeQuery = [PFQuery queryWithClassName:@"RemittanceTable"];
[beneCodeQuery whereKey:@"beneCode" containsString:_beneCodeText.text];

PFQuery *amountQuery = [PFQuery queryWithClassName:@"RemittanceTable"];
[amountQuery whereKey:@"remittanceAmount" equalTo:amount];

PFQuery *query = [PFQuery orQueryWithSubqueries:[NSArray arrayWithObjects:beneCodeQuery,amountQuery,nil]];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
    if (!error) {
        for (PFObject *object in objects) {
            NSLog(@"%@", object);

            [self resignAllResponder];
            _paymentDetailsImage.frame = CGRectMake(_paymentDetailsImage.frame.origin.x, _paymentDetailsImage.frame.origin.y, _paymentDetailsImage.frame.size.width, paymentModeOrigHeight);
            _detailsView.alpha = 1;

        }
    }}}];

【问题讨论】:

  • 我已经编辑了我的问题

标签: ios iphone parse-platform pfquery


【解决方案1】:

每次添加约束时,都会隐式使用 AND:

[query whereKey:@"username" equalTo:@"admin"];
[query whereKey:@"location" equalTo:@"USA"];

翻译为“用户名 == 'admin' AND location == 'USA'”

更新

以你的具体情况为例:

PFQuery *beneCodeQuery = [PFQuery queryWithClassName:@"RemittanceTable"];
[beneCodeQuery whereKey:@"beneCode" containsString:_beneCodeText.text];
[beneCodeQuery whereKey:@"remittanceAmount" equalTo:amount];

NSArray *result = [beneCodeQuery findObjects];

【讨论】:

  • 它工作正常。我会在两分钟后将此标记为答案,因为它会提示我在两分钟内接受此答案
  • 谢谢。很高兴你得到了你需要的东西
  • 在我的情况下这绝对不是真的。我在 2 个字符串字段上执行此操作,只需匹配其中一个字段即可返回记录。
  • @Jesse,这是不可能的。您的代码或数据有些奇怪。来自文档:“您可以提供多个约束,并且对象只有在匹配所有约束时才会出现在结果中。换句话说,它就像约束的 AND。” parse.com/docs/ios_guide#queries/iOS
  • 嗨,如果我在一个字段中有多个关键字怎么办。意味着在你的例子中我需要“用户名”必须有“im”和“ran”。然后查询应该返回“imran”,“imran123”....但不是“imra”或“mran”....等请指导我
【解决方案2】:

我最近在 Parse.com 论坛上看到了 Héctor Ramos 的这个答案:

您确实可以对单个查询有多个约束,这将被视为 AND。不支持对同一个键多次使用相同的约束。在这种情况下,您有两个 whereKey:equalTo: 对“成员”的约束,因此只考虑最后一个。

相反,您需要使用 whereKey:containsAllObjectsInArray:。

PFQuery *query = [PFQuery queryWithClassName:@"Conversation"];
[query whereKey:@"members" containsAllObjectsInArray:@[aFriend.data, [PFUser currentUser]]];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {...}];

希望对你有帮助。

【讨论】:

  • 仅适用于 1 个字段。如您所见,我在这里比较了两个字段。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-09
相关资源
最近更新 更多