簡體   English   中英

如何在解析android中獲取多個對象

[英]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 ,這是一種不好的做法。

為了使用指針,您需要執行以下操作:

  1. 轉到您的School子班,並為教師添加setter和getter。 教師的類型為列表<{Teacher Sub Class object}>
  2. 您的查詢現在應如下所示:

 ParseQuery<ParseObject> query = ParseQuery.getQuery("schoolClasses"); query.whereContainedIn("objectId",schoolClassesIds); query.include("teachers"); // this line will fetch also the teachers together with the school 

  1. 在查詢回調中,您現在可以通過以下方式訪問教師:

SchoolClass schoolClass =(SchoolClass)objects.get(i); schoolClass.getTeachers();

  1. 指針還允許您通過在include函數中使用點符號來檢索關系(例如,“ teachers.students”將把所有教師和所有學生帶入每位教師)。 這就是為什么我告訴您使用指針的原因。

您可以在這里了解更多信息

我還建議您也閱讀有關對解析對象進行子分類的內容。 通過查看您的代碼,您似乎並沒有真正使用它。 解析對象的子類使您可以使代碼更井井有條,還可以輕松訪問解析對象。

請在此處閱讀有關子類及其使用方法的更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM