2015-05-08 74 views
0

我有一個Android應用程序,使用Parse存儲公司名稱以及與公司關聯的應用程序。解析/ Android。獲取與對象關聯的用戶

我能夠得到一個名爲ownedby的列,它存儲了userID。

現在,我想將信息存儲在公司列中,其中userby中的用戶ID等於當前用戶。這裏是我正在使用的查詢:

 ParseQuery<ParseObject> query = ParseQuery.getQuery("midwifefirm"); 

     query.findInBackground(new FindCallback<ParseObject>() { 

      @Override 
      public void done(List<ParseObject> midwives, ParseException e) { 
       // TODO Auto-generated method stub 
       if(e==null) { 

        for (ParseObject midwifefirm : midwives) { 
         String midwiferelation; 
         ParseUser currentUser; 
         String userID; 


         midwiferelation = midwifefirm.getString("ownedby"); 
         currentUser = ParseUser.getCurrentUser(); 
         userID = currentUser.getObjectId(); 

         if (midwiferelation.equals(userID)) { 

          midwifefirm.put("yearsinpractice", yearsexperience); 
          midwifefirm.put("practicename", midwifefirmname); 
          midwifefirm.put("education", education); 



         } 

        } 

       } 
      else{ 
       Log.d("notretreive", "Error: " + e.getMessage()); 

       } 




           } 
           }); 

這似乎工作;但在後端,沒有數據存儲,所以我想我的「if語句」從來沒有工作。

有沒有什麼明顯的我做錯了?這是針對論文的一個項目,所以我可以嘗試爲演示文稿僞造一些內容,但希望學習如何正確執行。

非常感謝

邁克爾

+0

我想我可能已經發現了「ownedby」是一個指針的問題..吧? – cYrixmorten

+0

@cYrixmorten是的 –

回答

0

不知道我下面完全正確的代碼。但是,你的問題在於ownedBy是一個(據我所知)指向用戶的指針。如果你之後嘗試做midwifefirm.getString("ownedby"),你沒有像你期望的那樣得到objectId,而是得到類似{'type':'__pointer', 'class' : '_User', 'objectId' : 'xxx'}(我不記得符號,但希望你能得到這個想法;字面值指針字符串值)。

認識到這一點並不奇怪對象Id xxx字符串永遠不會等於midwifefirm.getString("ownedby")

相反的getString,你可以打電話getParseUser,它會返回一個空ParseUser用正確的OBJECTID,記得,指針只需要找回它指向的對象所需的最少信息。

您現在應該能夠對當前的ParseUser和指針ParserUser進行直接比較。後者爲空的事實應該不重要,因爲它只需要objectId來執行比較。

試試這個:

 ParseQuery<ParseObject> query = ParseQuery.getQuery("midwifefirm"); 

     query.findInBackground(new FindCallback<ParseObject>() { 

      @Override 
      public void done(List<ParseObject> midwives, ParseException e) { 
       // TODO Auto-generated method stub 
       if(e==null) { 

        for (ParseObject midwifefirm : midwives) { 
         ParseUser midwiferelation; 
         ParseUser currentUser; 



         midwiferelation = midwifefirm.getParseUser("ownedby"); 
         currentUser = ParseUser.getCurrentUser(); 


         if (midwiferelation.equals(currentUser)) { 

          midwifefirm.put("yearsinpractice", yearsexperience); 
          midwifefirm.put("practicename", midwifefirmname); 
          midwifefirm.put("education", education); 



         } 

        } 

       } 
      else{ 
       Log.d("notretreive", "Error: " + e.getMessage()); 

       } 




           } 
           });