如何在课堂上获取 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 对象计数的主要内容,如果未能解决你的问题,请参考以下文章
parse.com - 如何使用 PHP SDK 从 parse.com 查询和获取类似数组的 json?