我在Android项目中有一段代码,用于创建ParseObject
并将其存储在本地数据存储区中。但是,当我在done()
的{{1}}回调方法中检查objectId时,它返回null。如果我从pinInBackground()
切换到pinInBackground()
,那么它工作正常并且会给出有效的objectId。这是代码:
saveInBackground()
});
日志显示:
final ParseObject testObject = new ParseObject("TestObject");
testObject.put("foo", "bar2");
testObject.pinInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
if (e != null) {
Log.e(TAG, "Failed to pin TestObject: " + e.getMessage());
return;
}
Log.d(TAG, "Added key-value pair to TestObject '" + testObject.getObjectId() + "': 'foo' => 'bar2'");
}
为什么objectId为null?我是否需要设置它,因为它没有保存到云端?
答案 0 :(得分:6)
问题是您没有将对象保存到Parse数据库,只保存到设备,因此尚未实际创建对象。 pinInBackground()仅保存到设备,而saveInBackground()保存到Parse数据库,从而实际创建对象。如果使用.saveEventually(),则会固定,直到可以访问网络以保存到Parse数据库。但一般情况下 - 您实际上不会通过保存到您的设备来创建对象,它必须保存到Parse数据库才能创建。