android - 如何确保使用 saveEventually() 保存 ParseObject 和 ParseRelation

标签 android parse-platform

我最近开始在 Android 应用程序中使用 Parse 库。我想使用 saveEventually 存储用户联系人,然后使用 ParseRelation 将其与用户关联。由于有多个联系人映射到用户,我使用下面的代码来处理我的保存功能。

ParseRelation relation = ParseUser.getCurrentUser().getRelation(relationshipName);

for(int entityIndex = 0; entityIndex < entities.length;entityIndex++) { 
... 
  entity[entityIndex].saveEventually(); relation.add(entity[entityIndex]); 
...    
}

ParseUser.getCurrentUser().saveEventually();

在这里,我对每个有效实体 (ParseObject) 使用 saveEventually(),然后将其添加到关系中。稍后,一旦所有对象都添加到 ParseRelation 中,最后我会为 ParseUser 调用 saveEventually() 来将所有关系存储到 Parse。

这种做法对吗?我在 relation.add(entity[entityIndex]); 处遇到以下异常:

关系中的所有对象都必须有对象 ID。

这似乎表明存在一些网络连接问题,并且 ParseRelation 没有为每个 ParseObject 获取唯一的 objectId,但我假设这个 saveEventuall() 将使用 ParseRelation 很好地处理这种情况

请提出建议。我使用的是 Parse 库版本 1.1.11

谢谢。

最佳答案

添加到 ParseRelation 的任何对象都必须首先保存。 saveEventually 调用是非阻塞的,因此当对象被添加到 ParseRelation 时,在执行到达下一行时该对象不太可能已经被保存。

由于您需要确保首先保存对象,因此您应该使用 saveInBackground 而不是 saveEventually。然后确保将保存的对象添加到 saveInBackground 的 SaveCallback 内部的关系中。这将确保对象在添加到关系之前已被保存。

关于android - 如何确保使用 saveEventually() 保存 ParseObject 和 ParseRelation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15327255/

相关文章:

Android Espresso 不能与 Multidex 一起使用会给出 "No tests found"

node.js - 在亚马逊AWS Elastic beanstalk上安装解析仪表板(或本地?)

ios - 解析加载图像到 UIImageView iOS

javascript - 未捕获的类型错误 : Object #<Object> has no method '_isNullOrUndefined'

java - Jsoup简单解析

android - 如何将 EditText 放置在 Android 屏幕上的特定像素中?

android - 解析 Android 禁用推送通知

ios - 无法使用 Swift 和 Parse 在没有特定 objectId 错误的情况下进行更新

android - Mvvm协程Mockito测试ViewModel给出错误

java - 使用反射方法设置EditText光标颜色