#android #parse-platform
#Android #синтаксический анализ-платформа
Вопрос:
у меня есть три класса,
Class A:
--pointer to class B
Class B:
--Pointer to class C
Class C:
--name
я хотел бы сделать один запрос к ClassA и получить ClassC.name как я могу это сделать?
я пытался включить ClassA.ClassB, а затем getParseObject для ClassC, но это не удалось.
Комментарии:
1. можете ли вы объяснить «имя» a little..is это java-класс или что-то в этом роде..
2. вы пытались передать его ..?
Ответ №1:
Вам нужно использовать include()
метод следующим образом:
ParseQuery<ParseObject> query = ParseQuery.getQuery("ClassA");
query.include("pointerToB.pointerToC");
query.findInBackground(new FindCallback<ParseObject>() {
public void done(List<ParseObject> results, ParseException e) {
for (ParseObject a in results) {
ParseObject b = a.getParseObject("pointerToB");
ParseObject c = b.getParseObject("pointerToC");
String name = c.getString("name");
}
}
});
Это предполагает, что вызывается столбец класса A pointerToB
и вызывается столбец класса B. pointerToC
Ответ №2:
В вашем классе A
создайте средство получения для возврата вашего B
объекта:
public B getBobject() {
return myBobject;
}
Затем сделайте то же самое в B
классе, чтобы вернуть C
объект:
public C getCobject() {
return myCobject;
}
Наконец, сделайте это, чтобы получить name
:
myAobject.getBobject().getCobject().name
Ответ №3:
Вы должны использовать whereMatchesQuery
метод с внутренним запросом. Допустим, ваша структура классов выглядит следующим образом:
class C {
int id;
}
class B {
C c;
}
class A {
B b;
}
затем вы должны запросить пользователя как:
C c = new C();
ParseQuery innerQuery = ParseQuery.getQuery(B.class);
innerQuery.whereEqualTo("c", c);
ParseQuery<A> query = ParseQuery.getQuery(A.class);
query.whereMatchesQuery("b", innerQuery);
query.findInBackground(new FindCallback<A>() {
@Override
public void done(List<A> objects, ParseException e) {
}
});