ParseObject pinInBackground返回null objectId

Zac*_*Zac 3 android parse-platform

我在Android项目中有一段代码,用于创建ParseObject并将其存储在本地数据存储区中.但是,当我在done()回调方法中检查objectId时,pinInBackground()它返回null.如果我切换pinInBackground()saveInBackground()然后它工作正常,并给出一个有效的objectId.这是代码:

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'");
  }
Run Code Online (Sandbox Code Playgroud)

});

日志显示:

Added key-value pair to TestObject 'null': 'foo' => 'bar2'

为什么objectId为null?我是否需要设置它,因为它没有保存到云端?

use*_*298 6

问题是您没有将对象保存到Parse数据库,只保存到设备,因此尚未实际创建对象.pinInBackground()仅保存到设备,而saveInBackground()保存到Parse数据库,从而实际创建对象.如果使用.saveEventually(),则会固定,直到可以访问网络以保存到Parse数据库.但一般情况下 - 您实际上不会通过保存到您的设备来创建对象,它必须保存到Parse数据库才能创建.