android - ParseObject pinInBackground 返回空 objectId

标签 android parse-platform

我在 Android 项目中有一段代码创建了一个 ParseObject 并将其存储在本地数据存储中。但是,当我去检查 pinInBackground()done() 回调方法中的 objectId 时,它返回 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'");
  }

});

日志显示:

将键值对添加到 TestObject 'null': 'foo' => 'bar2'

为什么 objectId 为空?我是否需要设置它,因为它不会保存到云端?

最佳答案

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

关于android - ParseObject pinInBackground 返回空 objectId,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25289755/

相关文章:

android - adb 无法识别 Samsung Note II 和 Note 10.1

java - Android Canvas 线程变得疯狂

java - Android Studio中的任务 ':app:dexDebug'执行失败

android - 执行 Parse.initialize 时出现 java.util.ConcurrentModificationException(这

javascript - 删除解析文件

javascript - 如何使用 Parse 和 Mandrill 发送电子邮件通知?

ios - 尝试使用 Swift 从解析加载图像时出现 fatal error

Android 在 Linux 上找到使用 Bluez 创建的信标

android - 选择 WHICH 表的条件 - SQL 或 SQLITE

ios - 使用 swift 将当前用户的消息列表保存在解析中