简体   繁体   English

Android,获取指向ParseObject的指针

[英]Android, Get a pointer to a ParseObject

How do you get a pointer to a parse object? 你如何得到一个解析对象的指针?

For example, my ParseUser has a column called "school", which is a pointer to a Parse class "School" 例如,我的ParseUser有一个名为“school”的列,它是指向Parse类“School”的指针

school Pointer<School>

I am able to get a ParseObject of type School, however, I don't know how to get a pointer to this School ParseObject so I can put it in the ParseUser's school field. 我能够得到一个类型为School的ParseObject,但是,我不知道如何获得指向这个School ParseObject的指针,所以我可以把它放在ParseUser的学校领域。

I saw similar posts to this one that said to create a parse object without data and give it the correct object ID: 我看到这个帖子的类似帖子,说创建一个没有数据的解析对象,并给它正确的对象ID:

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

However, after running this code my Parse database for User just lists "(Undefined)" in the school field. 但是,在运行此代码后,我的用户Parse数据库只在学校字段中列出“(未定义)”。

Below is a code snippet capturing this entire process (after the snippet I further explain what is happening in the snippet): 下面是一个捕获整个过程的代码片段(在片段后我进一步解释了片段中发生的事情):

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

In my Parse class School, I have a column labeled name. 在我的Parse班学校,我有一个标有名字的专栏。 I have the user input their school, for example "MIT". 我让用户输入他们的学校,例如“MIT”。 I then query the schools class on parse for an equivalent name. 然后我在解析学校类中查询等效名称。 So that gives me the corresponding ParseObject of school class. 这样就给了我相应的ParseObject学校课程。 I want to put that in the ParseUsers school field. 我想把它放在ParseUsers学校领域。 However, the ParseUser field for school is a pointer to the School class. 但是,学校的ParseUser字段是指向School类的指针。 How can I get a pointer to my given ParseObject to put into the user's school field? 如何获取指向我的给定ParseObject的指针放入用户的学校领域?

You have to call currentUser.saveInBackground(); 你必须调用currentUser.saveInBackground(); inside the GetCallback for it to update correctly: 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