2014-03-13 17 views
2

我使用这link作为指导,但我可以找出如何使用AND子句进行解析。它只在示例代码中定义OR子句。我怎样才能得到AND子句解析ios

如果我是把它从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; 

     } 
    }}}]; 
+0

我已编辑d我的问题 – lhencq

回答

6

每次添加一个约束的时候,它是隐式使用AND:

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

转化为 “用户名== '管理' 和位置== 'USA'”

UPDATE

以您的具体案例为例:

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

NSArray *result = [beneCodeQuery findObjects]; 
+0

它工作正常。我会在两分钟后将此标记为答案,因为它会在两分钟内提示我接受此答案 – lhencq

+0

谢谢。很高兴你有你需要的 – Moonwalkr

+0

这在我的情况下绝对不是真的。我在2个字符串字段上做了这个确切的事情,只是通过匹配其中一个它返回记录。 – Jesse

0

我碰到这个答案上Parse.com论坛近日来到由赫克托·拉莫斯:

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

相反,你会想要使用whereKey:containsAllObjectsInArray :.

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

我希望它能帮助。

+0

它只适用于1场。正如你所看到的,我在这里比较两个领域。 – lhencq