我在 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/