Запрос в ParseObject

Я пытаюсь получить объект с запросом Parse.

Это мой код:

ParseQuery<ParseObject> query = ParseQuery.getQuery("Conference"); query.findInBackground(new FindCallback<ParseObject>() { public void done(List<ParseObject> results, ParseException e) { if (e == null) { // Results were successfully found from the local datastore. } else { showLog(e.toString()); } } }); 

Я получаю эту ошибку:

Com.parse.ParseException: java.lang.IllegalStateException: ParseObject не имеет данных для 'objectId'. Вызовите fetchIfNeeded (), чтобы получить данные.

BTW мой класс Conference содержит указатели.

Если вы запрашиваете непосредственно из Parse, вы можете сделать следующее:

 ParseQuery<ParseObject> query = ParseQuery.getQuery("Conference"); ... query.include("name_of_the_column_containing_a_pointer"); query.include("another_pointer_column"); query.findInBackground(new FindCallback<ParseObject>() { public void done(List<ParseObject> results, ParseException e) { if (e == null) { // You can now access the pointers specified in the include } else { showLog(e.toString()); } } }); 

В противном случае, если вы запрашиваете локальное хранилище данных:

 ParseQuery<ParseObject> query = ParseQuery.getQuery("Conference"); ... query.findInBackground(new FindCallback<ParseObject>() { public void done(List<ParseObject> results, ParseException e) { if (e == null) { ParseObject parseObject = results.get(0); // Get the object parseObject.fetchIfNeededInBackground(new GetCallback<ParseObject>() { public void done(ParseObject result, ParseException e) { if (e == null) // Do something with result } } } else { showLog(e.toString()); } } }); 

Привет @Juergen Мне удалось получить строку objectId используя один из следующих способов:

 String id = ParseUser.getCurrentUser().getObjectId(); 

В функции Findcallback done .

Второй способ – также в функции done() для findCallBack где возвращенные данные называются

 objects.objects.get(0).getObjectId(); 

Вот третий способ. Главный ключ здесь – установить ParseObject как конечную переменную, чтобы вы могли ссылаться на нее в методе done() .

 final ParseObject po = new ParseObject("Test"); po.put("username", temp.getUserName()); po.saveInBackground(new SaveCallback() { public void done(ParseException e) { if (e == null) { String id = po.getObjectId(); Log.d(TAG, "The object id is: " + id); } else { // The save failed. Log.d(TAG, "User update error: " + e); } } }); 

Я надеюсь, это поможет вам.

У меня такая же проблема. Проблема заключалась в том, что я переопределил метод getObjectId в своих реализациях ParseObject :

 @ParseClassName("MyOwnParseClass") public class MyOwnParseClassextends ParseObject { public static ParseQuery<MyOwnParseClass> getQuery() { return ParseQuery.getQuery(MyOwnParseClass.class); } public String getObjectId() { return getString("objectId"); } public String getName() { return getString("name"); } public void setName(String name) { put("name", name); } } 

Но ParseObject уже имеет метод getObjectId() и использует

 return getString("objectId"); 

Не возвращает objectId .

Попробуйте этот код

 ParseQuery<ParseObject> query = ParseQuery.getQuery("MyClass"); ParseUser user = ParseUser.getCurrentUser(); query.whereEqualTo("owners", user); query.findInBackground(new FindCallback<ParseObject>() { @Override public void done(List<ParseObject> objects, com.parse.ParseException e) { if (e == null) { for (ParseObject parseObject : objects){ String task; task= parseObject.get("owners").toString(); adapter.add(task); adapter.notifyDataSetChanged(); } } else { // Something went wrong. Toast.makeText(getActivity(),"Error: " + e.getMessage().toString(),Toast.LENGTH_SHORT).show(); } } }); 
 ParseQuery<ParseObject> queryP = ParseQuery.getQuery("Courses"); queryP.whereEqualTo("Student", nameStudent); queryP.findInBackground(new FindCallback<ParseObject>() { @Override public void done(List<ParseObject> coursesList, ParseException e) { ArrayList<String> courses = null; if (e == null) { courses = new ArrayList<String>(); for (ParseObject course : coursesList) { String courseName = course.getString("CoursesNameInParseColumn"); courses.add(courseName); } } else { Log.d("Post retrieval", "Error: " + e.getMessage()); } populateCoursesList(courses); } }); 

Попробуйте это