ParseObject pinInBackground возвращает null objectId

У меня есть блок кода в проекте Android, который создает ParseObject и сохраняет его в локальном хранилище данных. Однако, когда я иду, чтобы проверить 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'"); } 

});

Журнал показывает:

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

Почему objectId null? Нужно ли устанавливать его, поскольку он не сохраняется в облаке?

Проблема в том, что вы не сохраняете объект в базе данных Parse только для устройства, поэтому объект еще не создан. PinInBackground () сохраняется только на устройстве, а saveInBackground () сохраняет базу данных Parse, тем самым фактически создавая объект. Если вы используете .saveEventually (), это будет отображаться до тех пор, пока сеть не будет достигнута для сохранения в базе данных Parse. Но в целом – вы фактически не создадите объект, только сохраняя его на своем устройстве, его необходимо сохранить в базу данных анализа для создания.