2014-06-21 33 views
2

我有三個班,兩級指針 - 一個查詢parse.com

Class A: 
--pointer to class B 

Class B: 
--Pointer to class C 

Class C: 
--name 

我想提出一個查詢ClassA的,和檢索ClassC.name我該怎麼辦呢?

我曾嘗試包括classA.ClassB,然後getClassObject爲classC但這沒有成功。

+0

你能解釋一下「名」這個little..is Java類或什麼.. – Ranjit

+0

你試圖通過它..? – Ranjit

回答

0

在你A類中創建一個getter來回報您的B對象:

public B getBobject() { 
    return myBobject; 
} 

那就不要在B類相同返回C對象:

public C getCobject() { 
    return myCobject; 
} 

最後,這樣做是爲了得到name

myAobject.getBobject().getCobject().name 
4

您需要使用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

0

您應該對內部查詢使用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) { 

    } 
});