2014-03-13 40 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