如何使用PFQuery查询与数组的精确匹配?

时间:2014-03-01 00:13:03

标签: ios iphone parse-platform

我在Parse中有一个Game类,其中一个属性是participants,它是NSStrings个用户名的数组。我的目标是基于用户名的NSArray(称为selectedParticipants)执行PFQuery,以便在找到participants的用户名完全匹配时返回Game对象。

然而,当我使用

[queryForGames whereKey:@"participants" equalTo:selectedParticipants];

我收到一个错误,我无法根据数组(Cannot do a comparison query for type: __NSArrayM)进行比较查询。我还尝试了Parse reference指南中列出的其他几种类型的查询,例如使用whereKey:containsAllObjectsInArray:,但它们将返回无关的Game个对象,这些对象包含{{1}中的用户名添加}}。有没有办法可以使用PFQuery通过数组的精确匹配进行查询?

谢谢!

2 个答案:

答案 0 :(得分:5)

来自iOS Developer Guide on array queries

[query whereKey:@"participants" containsAllObjectsInArray:selectedParticipants];

从我可以看出,似乎没有一个查询来完全匹配数组而没有额外的元素,但你可以添加一个语句来检查selectedParticipants数组中针对返回的参与者的元素数量。如果它们相等则完全匹配。

答案 1 :(得分:2)

您可以创建一个cloud function,对数组内容运行'broad'查询,然后在返回结果之前过滤掉任何其他项。这与应用程序和数据存储的调用次数相同,但比将无关数据发送回应用程序更有效。