2013-09-22 52 views
2
PFQuery *query1 = [PFUser query]; 
[query1 whereKey:@"array" containedIn:currentUserArray]; 

PFQuery *orderQuery = [PFQuery orQueryWithSubqueries:@[query1]]; 
[orderQuery orderByAscending:query1.count]; 

我知道这个代码不会伎俩,但这是我迄今为止所有。如何计算parse.com查询中数组值的数量?

基本上我正在做的事情用户类的查询,看看是否有用户阵列”是containedIncurrentUser的阵列

至于现在,我可以得到所有有共同阵列值的用户,但我要订购从最常见的阵列的结果最不常见

我知道你可以countObjects在查询中,但我试图计数查询中的对象中的数组值。

我该怎么做?我需要超越Parse的文档来完成这个吗?

回答

1

答案是您需要存储和维护计数字段。您可以使用Cloud Code来更新号码。

阅读有关Cloud Code - Performing Actions After a Save的帮助文档,因为它涵盖了维护您需要的计数。

一旦你有了,你将有一个领域,你可以排序。

+0

请记住,在Parse的新定价模式下,如果保存挂钩的运行时间超过三秒,则可以终止挂钩。这听起来很长时间,但有时候Parse有些莫名其妙地需要这么长时间才能运行一个最小的钩子,并且你的计数是错误的。 –

+0

@RogerNolan我简单地引用了Parse在他们的文档中推荐的内容,你的意思是“你的计数是错误的”?如果保存钩子被终止,如果你的意思是保存已经结束,但是afterSave没有更新计数,那么使用beforeSave和超时错误意味着再次尝试保存(超时错误也是我的!)。我必须创建'tryAtMost(times,anonFunction)'方法,以便在向用户显示错误之前,如果需要,我的保存按钮可以尝试几次。 –

+0

请参阅https://groups.google.com/forum/#!topic/parse-developers/1GOv37oTY2k,特别是此缺陷https://developers.facebook.com/bugs/1507064772916218,其中Parse开发与自己的文档相矛盾,并且说:“为了使这更可靠,我们建议直接从客户端更新这两个对象,或者从具有15s限制的云代码函数更新这两个对象”,即saveHooks是无用的。 –