如何获得指向解析对象的指针?
例如,我的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的指针放入用户的学校领域?
答案 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());
}
}
});