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

时间:2013-03-10 20:33:43

标签: 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后,最后我调用saveEventually()以便ParseUser将所有关系存储到Parse。

这种方法对吗?我在relation.add(entity [entityIndex]);

下面的异常

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

这似乎表明一些网络连接问题和ParseRelation没有获得每个ParseObject的唯一objectId,但我假设这个saveEventuall()将使用ParseRelation很好地处理这个场景

请建议。我正在使用Parse库版本1.1.11

感谢。

1 个答案:

答案 0 :(得分:4)

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

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