2014-03-25 32 views
0

我的應用程序使用Parse作爲後端。在應用程序的某個時刻,我必須查詢應該包含至少一個另一個數組中的標籤的對象。爲了說清楚,在數據庫中,我有一個類圖片,它具有標籤屬性,可以將標籤保存在數組中。在我的應用程序中,我有一組需要比較的標籤。只有至少有一個標籤存儲在Tags屬性中的對象應該被獲取。我試圖使用以下PFQuery函數whereKey:containedIn:whereKey:containsAllObjectsInArray:然而,他們都沒有做我想做的。現在我將注意力轉移到NSPredicates。我試過如下:使用NSPredicate實現高效的PFQuery

PFQuery *postsQuery = [PFQuery queryWithClassName:@"Pictures" predicate:[NSPredicate predicateWithFormat:@"ANY Tags MATCHES ANY ", _tags]]; 

當我運行收到以下錯誤代碼:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Unable to parse the format string "ANY Tags MATCHES ANY "' 

我怎樣才能執行這樣的查詢或我的情況的權利NSPredicate?

由於該查詢應該是關於進一步解釋什麼一個例證: 假設在數據庫中的對象之一已在「標籤」下面列

Tags = ["music", "video", "picture", "chocolate"] 

和標籤陣列,我想在謂語使用如下:

tagsArray = @["picture", "French"]; 

什麼,我期待在接收以前的對象,因爲它具有「圖片」標籤。如果另一個對象不包含tagsArray中的至少一個標記,則不應該獲取它。

編輯: 我發現我不能使用聚合操作,如ANY,SOME,ALL或NONE。我能找到另一種解決方案嗎

回答

1

另一種解決方案是使用雲代碼並在Javascript中將查詢寫入服務器。

然後您只需訪問您定義的新API端點並以這種方式獲得查詢結果。

+0

好的,謝謝,我會嘗試 – HusseinB

0

好吧,我發現使用whereKey:ContainedIn:實際上在這種情況下。我的問題是我錯誤地傳遞了一系列字典。我想用的那個是由字符串組成的。