2015-06-25 8 views
3

Как вы получаете указатель на объект синтаксического анализа?Android, получить указатель на ParseObject

Например, мой ParseUser имеет столбец под названием «школа», которая является указателем на класс «Школа» Разбор

school Pointer<School> 

я в состоянии получить ParseObject типа школы, тем не менее, я не Не знаете, как получить указатель на этот ParseObject School, чтобы я мог поместить его в школьное поле ParseUser.

Я видел подобные сообщения к этому, который сказал, чтобы создать объект синтаксического анализа без данных и дать ему правильный идентификатор объекта:

ParseObject mySchoolPtr = ParseObject.createWithoutData("School", mySchoolObject.getObjectId()); 
currentUser.put("school", mySchoolPtr); 

Однако, после выполнения этого кода моих Анализировать базы данных для пользователя просто перечисляет «(Undefined) "в школе.

Ниже приведен фрагмент кода, захватив весь этот процесс (после сниппета Далее я объясню, что происходит в сниппет):

String school = schoolEditText.getText().toString().trim(); 
    String password = passwordEditText.getText().toString().trim(); 

    final ParseUser currentUser = ParseUser.getCurrentUser(); 

    currentUser.setPassword(password); 

    // Query schools and search for name == school, create pointer for that one and put it for user "school" 
    ParseQuery<ParseObject> query = ParseQuery.getQuery("School"); 
    query.whereEqualTo("name", school); 
    query.getFirstInBackground(new GetCallback<ParseObject>() { 
     public void done(ParseObject school_found, ParseException e) { 
      if (school_found != null) { 
       Log.d("School", "Retrieved " + school_found.getString("name")); 
       ParseObject myschoolptr = ParseObject.createWithoutData("School", school_found.getObjectId()); 
       currentUser.put("school", myschoolptr);        
      } else { 
       Log.d("School", "Error: School name not found in Database. " + e.getMessage()); 
      } 
     } 
    }); 
    currentUser.saveInBackground(); 
    showMainActivity(); 

В моем классе Разбор школе, у меня есть столбец маркированы имя. У меня пользователь вводит свою школу, например «MIT». Затем я запрашиваю класс школы для разбора эквивалентного имени. Итак, это дает мне соответствующий ParseObject школьного класса. Я хочу поместить это в поле школы ParseUsers. Однако поле ParseUser для школы является указателем на класс школы. Как я могу получить указатель на мой данный ParseObject для ввода в школьное поле пользователя?

ответ

1

Вы должны вызвать currentUser.saveInBackground(); внутри GetCallback для того, чтобы правильно обновить:

... 
query.getFirstInBackground(new GetCallback<ParseObject>() { 
    public void done(ParseObject school_found, ParseException e) { 
     if (school_found != null) { 
      Log.d("School", "Retrieved " + school_found.getString("name")); 
      ParseObject myschoolptr = ParseObject.createWithoutData("School", school_found.getObjectId()); 
      currentUser.put("school", myschoolptr);   
      currentUser.saveInBackground();  
      showMainActivity();    
     } else { 
      Log.d("School", "Error: School name not found in Database. " + e.getMessage()); 
     } 
    } 
}); 
Смежные вопросы