我最近开始在 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/