如何在课堂上获取 Parse.com 对象计数

Posted

技术标签:

【中文标题】如何在课堂上获取 Parse.com 对象计数【英文标题】:How to get Parse.com object count in class 【发布时间】:2016-01-23 11:43:19 【问题描述】:

我想从 Parse.com 中的 5 个类中获取对象计数(以检查是否成功获取所有对象)。

因为我使用的是findObjectsInBackgroundWithBlock:有时在我使用它之前并不是所有的对象都被获取,这就是我想要检查的原因。

我该怎么做?

【问题讨论】:

【参考方案1】:

更新 2:刚刚注意到您询问的是 ios。它的原理基本相同,像这样使用 fetchAllIfNeeded: https://parse.com/docs/ios/api/Categories/PFObject(Synchronous).html#/c:objc(cs)PFObject(cm)fetchAllIfNeeded:

更新:比天真的方法(如下)更好的方法可能是使用 fetchAllIfNeededInBackground:

ArrayList<ParseObject> objectsToFetch = new ArrayList<>();
objectsToFetch.add(object1);
objectsToFetch.add(object2);
objectsToFetch.add(object3);
ParseObject.fetchAllIfNeededInBackground(objectsToFetch, new FindCallback<ParseObject>() 
    @Override
    public void done(List<ParseObject> objects, ParseException e) 
        //all are fetched, do stuff
    
);

我这样做的本机方法是添加一个外部布尔数组,其中每个布尔值负责其中一个类。 当 findObjectsInBackgroundWithBlock 的 'done' 函数运行时,我将该布尔值设置为“true”并运行一个函数来检查所有数组是否为真,如果是,则 -> 已获取所有类,我可以继续。

我的代码示例:

boolean[] itemFetched;

protected void getAllClassesAndDoStuffWithThem() 
    itemFetched= new boolean[NUM_OF_CLASSES];

    for (int i=0;i<NUM_OF_CLASSES;i++)
        final int finalI = i;
        itemFetched[i] = false;
        parseObjectArray[i].fetchIfNeededInBackground(new GetCallback<ParseObject>() 
            @Override
            public void done(ParseObject object, ParseException e) 
                itemFetched[finalI] = true;
                finishInitIfPossible();
            
        );
    




private void finishInitIfPossible() 
    for (int i=0;i<NUM_OF_CLASSES;i++)
        if (!itemFetched[i])
            return;
    

    //all classes fetched
    finishInit();


private void finishInit() 
    //do stuff with all 5 classes

【讨论】:

以上是关于如何在课堂上获取 Parse.com 对象计数的主要内容,如果未能解决你的问题,请参考以下文章

在 fabric.js 如何获取活动对象上的项目(计数)

Parse.com 查询超过 1000 个对象

parse.com - 如何使用 PHP SDK 从 parse.com 查询和获取类似数组的 json?

如何批量更新用户类(Parse.com、Android)中的所有对象?

查询解析以获取对象的状态

parse.com / iOS - 有没有办法以 json 格式下载整个类对象?