Android,获取指向ParseObject的指针

时间:2015-06-25 22:47:43

标签: android pointers parse-platform

如何获得指向解析对象的指针?

例如,我的ParseUser有一个名为" school"的列,它是指向Parse类的指针" School"

school Pointer<School>

我能够得到一个学校类型的ParseObject,但是,我不知道如何获得指向这个学校ParseObject的指针,所以我可以把它放在ParseUser的学校领域。

我看到了这个帖子的类似帖子,它说创建一个没有数据的解析对象并给它正确的对象ID:

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

然而,在运行此代码之后,我的Parse数据库仅供用户列出&#34;(未定义)&#34;在学校领域。

以下是捕获整个过程的代码段(在片段之后我进一步解释了代码段中发生的情况):

    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班学校,我有一个标有姓名的专栏。 我让用户输入他们的学校,例如&#34; MIT&#34;。 然后我在解析学校类中查询等效名称。 这样就给了我相应的ParseObject学校课程。 我想把它放在ParseUsers学校领域。 但是,学校的ParseUser字段是指向School类的指针。 如何将指向我给定的ParseObject的指针放入用户的学校领域?

1 个答案:

答案 0 :(得分:1)

您必须在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());
        }
    }
});