我正在通过他们的objId查询一组ParseObjects。我已将所有objectIds添加到列表中。但是当Parse返回查询时,它不会按照我提供的objectIds的顺序返回它。有时确实如此,有时却没有。
我已经使用了Collections.reverse(),但这是毫无意义的,因为有时候对象会按照objIdList的顺序返回,有时它们不是。
有没有办法确保返回的ParseObjects-List与objIdList的顺序相同?
查询摘录
ParseQuery<ParseObject> query = ParseQuery.getQuery("Alarm");
query.whereEqualTo("user", user);
//Collections.reverse(objIdList);
query.whereContainedIn("objectId", objIdList);
query.findInBackground(new FindCallback<ParseObject>()
{
@Override
public void done(List<ParseObject> objects, ParseException e)
{
//Objects is a list of Alarms by the user that need to be added
if(objects!=null)
{
pExistingAlarmList.addAll(objects);
Collections.reverse(pExistingAlarmList);
}
}
}
修改 我现在使用的解决方法是单独查询每个objectId。这非常有效。 但如果它可以在一个查询中完成它 我太棒了!
ParseQuery<ParseObject> query = ParseQuery.getQuery("Alarm");
query.whereEqualTo("user", user);
// Retrieve the object by id
query.getInBackground(objId, new GetCallback<ParseObject>()
{
public void done(ParseObject alarmObject, ParseException e)
{
if (e == null)
{
//Use alarmObject
}
}
}
答案 0 :(得分:0)
添加和Arraylist可以帮助,通过遍历每个对象将其objectId保存到arrayList。
ArrayList<String> objectsId = new ArrayList<String>();
ParseQuery<ParseObject> query = ParseQuery.getQuery("Alarm");
query.whereEqualTo("user", user);
query.whereContainedIn("objectId", objIdList);
query.findInBackground(new FindCallback<ParseObject>()
{
@Override
public void done(List<ParseObject> objects, ParseException e)
{
//Objects is a list of Alarms by the user that need to be added
if(objects!=null)
{
for(ParseObject object : objects){
String objectId = object.get("objectId");
objectsId.add(objectId);
}
}
}
}