我在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为null?我是否需要设置它,因为它没有保存到云端?
解决方法:
问题是您没有将对象保存到Parse数据库,只保存到设备,因此尚未实际创建对象. pinInBackground()仅保存到设备,而saveInBackground()保存到Parse数据库,从而实际创建对象.如果使用.saveEventually(),则会固定,直到可以访问网络以保存到Parse数据库.但一般情况下 – 您实际上不会通过保存到您的设备来创建对象,它必须保存到Parse数据库才能创建.
标签:parse-platform,android 来源: https://codeday.me/bug/20190825/1714123.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。