如何在解析android

时间:2016-11-22 21:48:23

标签: java android parse-platform

  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 个答案:

答案 0 :(得分:0)

从你的代码我可以理解你有一个学校班级,每个学校可以有1 ...许多老师。 对于该结构,您应该使用指针。 指针允许您保存2个解析对象之间的一对多关系,最大的好处是您可以执行一个 api调用以获取所需的所有数据,因此您无需调用在循环中获取这是一种不好的做法。

要使用指针,您需要执行以下操作:

  1. 转到您的学校子课程,为教师添加二传手和吸气器。教师将是List&lt; {Teacher Sub Class object}&gt;
  2. 类型
  3. 您的查询现在应如下所示:
  4. 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. 在您的查询回调中,您现在可以通过以下方式访问教师:
    2. SchoolClass schoolClass =(SchoolClass)objects.get(i); schoolClass.getTeachers();

      1. 指针还允许您通过在 include 功能中使用点符号来检索关系关系(例如,“teachers.students”将为每位教师带来所有教师和所有学生)。这就是我告诉你使用指针的原因。
      2. 您可以在here

        中详细了解相关信息

        我还建议你阅读Sub classing你的解析对象。通过查看您的代码,您似乎并没有真正使用它。解析对象的子类化允许您使代码更有条理,并且还可以轻松访问解析对象。

        请详细了解子类以及如何在here中使用它 这不仅仅是一个推荐:)