[英]how to fetch more than one object in parse android
public void getSchoolClasses(ArrayList<SchoolClass>schoolClassesIds , final CompletionHandler completionHandler){
ParseQuery<ParseObject> query = ParseQuery.getQuery("schoolClasses");
query.whereContainedIn("objectId",schoolClassesIds);
query.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject> objects, ParseException e) {
if (e==null){
for (int i =0 ; i < objects.size();i++){
SchoolClass schoolClass=(SchoolClass)objects.get(i);
schoolClass.getTeacher().fetchInBackground(new GetCallback<ParseObject>() {
@Override
public void done(ParseObject object, ParseException e) {
}
});
}
}else{
completionHandler.onError(e);
}
}
});
}
我怎么知道什么時候完成所有對象的提取並觸發完成處理程序?
從您的代碼中,我可以了解到您有一所學校班級,每所學校可以有1 ...許多老師。 對於這種結構,您應該使用指針 。 指針使您可以保存2個解析對象之間的一對多關系,最大的好處是您可以執行一個 api調用來獲取所需的所有數據,因此無需循環調用fetch ,這是一種不好的做法。
為了使用指針,您需要執行以下操作:
ParseQuery<ParseObject> query = ParseQuery.getQuery("schoolClasses"); query.whereContainedIn("objectId",schoolClassesIds); query.include("teachers"); // this line will fetch also the teachers together with the school
SchoolClass schoolClass =(SchoolClass)objects.get(i); schoolClass.getTeachers();
您可以在這里了解更多信息
我還建議您也閱讀有關對解析對象進行子分類的內容。 通過查看您的代碼,您似乎並沒有真正使用它。 解析對象的子類使您可以使代碼更井井有條,還可以輕松訪問解析對象。
請在此處閱讀有關子類及其使用方法的更多信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.