Parse 中的 objectId 为 null,尽管在将对象保存到 Parse 云时没有 ParseException
objectId in Parse is null, although there is no ParseException while saving object to Parse cloud
我正在尝试将对象保存到 Parse 云并在成功保存后获取其 objectId。如果有的话,我正在日志中打印异常。单击保存按钮后,日志中没有显示 ParseException,但返回的 objectId 始终为 null。
这是我的子class:
@ParseClassName("PetOwner")
public class PetOwner 扩展了 ParseObject {
public PetOwner(){ super(); }
public String getOwnerId(){
return getString("objectId");
}
public String getOwnerName(){
return getString("name");
}
public ParseGeoPoint getLocation(){
return getParseGeoPoint("location");
}
public String getPhoneNumber(){
return getString("phoneNumber");
}
public Number getRadius(){
return getNumber("searchRadius");
}
public Installation getInstallation(){
return (Installation) getParseObject("installation");
}
public String getBackupEmail(){
return getString("backupemail");
}
public String getEmail(){
return getString("email");
}
public Date createdAt(){
return getDate("createdAt");
}
public Date updatedAt(){
return getDate("updatedAt");
}
public void setOwnerName(String name){ put("name", name); }
public void setPhoneNumber(String phone){ put("phoneNumber", phone); }
public void setEmail(String email){ put("email", email); }
public static ParseQuery<PetOwner> getQuery(){
return ParseQuery.getQuery(PetOwner.class);
}
}
这是我编写的代码,用于在获取用户在 EditText 视图中输入的名称、phone 号码和电子邮件字段的值后将对象保存到云中。
FloatingActionButton saveProfile = (FloatingActionButton) findViewById(R.id.save_button);
saveProfile.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (nameChanged && checkPhoneNumber() && checkEmail()) {
final PetOwner petOwner = new PetOwner();
petOwner.setOwnerName(userName.getText().toString());
petOwner.setPhoneNumber(phoneNumber.getText().toString());
petOwner.setEmail(email.getText().toString());
petOwner.saveInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
if (e == null) {
Log.d(TAG, "after saveinbackground is done");
Log.d(TAG, petOwner.getOwnerId() + " is the saved object id");
} else {
Log.d(TAG, "saveinbackground NOT done");
Log.e(TAG, "exception", e);
}
}
});
}
}
});
日志显示:
04-09 19:33:50.385 31818-31818/us.furalert.Furalert D/PetOwnerDetails: after saveinbackground is done
04-09 19:33:50.385 31818-31818/us.furalert.Furalert D/PetOwnerDetails: null is the saved object id
我无法弄清楚我的代码有什么问题。为什么objectId为空?
请帮忙!
将 getString("objectId") 替换为 getObjectId(),因为 ParseObjects 有一个内置方法来检索 objectId
我正在尝试将对象保存到 Parse 云并在成功保存后获取其 objectId。如果有的话,我正在日志中打印异常。单击保存按钮后,日志中没有显示 ParseException,但返回的 objectId 始终为 null。
这是我的子class:
@ParseClassName("PetOwner")
public class PetOwner 扩展了 ParseObject {
public PetOwner(){ super(); }
public String getOwnerId(){
return getString("objectId");
}
public String getOwnerName(){
return getString("name");
}
public ParseGeoPoint getLocation(){
return getParseGeoPoint("location");
}
public String getPhoneNumber(){
return getString("phoneNumber");
}
public Number getRadius(){
return getNumber("searchRadius");
}
public Installation getInstallation(){
return (Installation) getParseObject("installation");
}
public String getBackupEmail(){
return getString("backupemail");
}
public String getEmail(){
return getString("email");
}
public Date createdAt(){
return getDate("createdAt");
}
public Date updatedAt(){
return getDate("updatedAt");
}
public void setOwnerName(String name){ put("name", name); }
public void setPhoneNumber(String phone){ put("phoneNumber", phone); }
public void setEmail(String email){ put("email", email); }
public static ParseQuery<PetOwner> getQuery(){
return ParseQuery.getQuery(PetOwner.class);
}
}
这是我编写的代码,用于在获取用户在 EditText 视图中输入的名称、phone 号码和电子邮件字段的值后将对象保存到云中。
FloatingActionButton saveProfile = (FloatingActionButton) findViewById(R.id.save_button);
saveProfile.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (nameChanged && checkPhoneNumber() && checkEmail()) {
final PetOwner petOwner = new PetOwner();
petOwner.setOwnerName(userName.getText().toString());
petOwner.setPhoneNumber(phoneNumber.getText().toString());
petOwner.setEmail(email.getText().toString());
petOwner.saveInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
if (e == null) {
Log.d(TAG, "after saveinbackground is done");
Log.d(TAG, petOwner.getOwnerId() + " is the saved object id");
} else {
Log.d(TAG, "saveinbackground NOT done");
Log.e(TAG, "exception", e);
}
}
});
}
}
});
日志显示:
04-09 19:33:50.385 31818-31818/us.furalert.Furalert D/PetOwnerDetails: after saveinbackground is done
04-09 19:33:50.385 31818-31818/us.furalert.Furalert D/PetOwnerDetails: null is the saved object id
我无法弄清楚我的代码有什么问题。为什么objectId为空?
请帮忙!
将 getString("objectId") 替换为 getObjectId(),因为 ParseObjects 有一个内置方法来检索 objectId