我最近开始在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
感谢。
答案 0 :(得分:4)
必须首先保存添加到ParseRelation 的任何对象。 saveEventually调用是非阻塞的,因此在将对象添加到ParseRelation时,当执行到达下一行时,该对象不太可能已被保存。
由于您需要确保首先保存对象,因此应使用saveInBackground而不是saveEventually。然后确保将保存的对象添加到saveInBackground的SaveCallback内部的关系中。这将确保在添加到关系之前已保存对象。