簡體   English   中英

Android,獲取指向ParseObject的指針

[英]Android, Get a pointer to a ParseObject

你如何得到一個解析對象的指針?

例如,我的ParseUser有一個名為“school”的列,它是指向Parse類“School”的指針

school Pointer<School>

我能夠得到一個類型為School的ParseObject,但是,我不知道如何獲得指向這個School ParseObject的指針,所以我可以把它放在ParseUser的學校領域。

我看到這個帖子的類似帖子,說創建一個沒有數據的解析對象,並給它正確的對象ID:

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

但是,在運行此代碼后,我的用戶Parse數據庫只在學校字段中列出“(未定義)”。

下面是一個捕獲整個過程的代碼片段(在片段后我進一步解釋了片段中發生的事情):

    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();

在我的Parse班學校,我有一個標有名字的專欄。 我讓用戶輸入他們的學校,例如“MIT”。 然后我在解析學校類中查詢等效名稱。 這樣就給了我相應的ParseObject學校課程。 我想把它放在ParseUsers學校領域。 但是,學校的ParseUser字段是指向School類的指針。 如何獲取指向我的給定ParseObject的指針放入用戶的學校領域?

你必須調用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());
        }
    }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM