[英]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.