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

Android 如何确保使用savefinally()保存ParseObject和ParseRelation,android,parse-platform,Android,Parse Platform,我最近开始使用Android应用程序的解析库。我想使用savefinally存储用户联系人,然后使用ParseRelation将其与用户关联。由于有多个联系人映射到用户,我使用下面的代码来处理我的保存功能 ParseRelation relation = ParseUser.getCurrentUser().getRelation(relationshipName); for(int entityIndex = 0; entityIndex < entities.length;entit

我最近开始使用Android应用程序的解析库。我想使用savefinally存储用户联系人,然后使用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使用savefinally,然后将其添加到关系中。稍后,一旦将所有对象添加到ParseRelation,最后我将调用SaveFinally for ParseUser来存储所有要解析的关系

这种方法正确吗?我在关系中得到以下异常。加法[实体索引]

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

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

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


谢谢。

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


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

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


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

谢谢。对不起,回信晚了。我理解你的建议。但当用户保存数据时,我不希望该操作依赖于网络。我希望,只要存在网络连接,数据就会被存储,否则它就会像savefinally那样保持在本地。根据你的建议,这是不可能的。那个么,有什么方法可以避免网络依赖性,并在本地保留相关对象(若并没有网络的话)?对象之间总会有一些关系,这一限制使得saveEventuall在大多数地方都不可用。谢谢Hector。我明白你的意思。我应该使用saveventurallysavecallback回调来实现我要做的事情。因为这将确保所有对象都存储在本地,直到网络不可用,并且一旦网络连接存在,保存对象并调用回调以存储关系。谢谢Hector。对不起,回信晚了。我理解你的建议。但当用户保存数据时,我不希望该操作依赖于网络。我希望,只要存在网络连接,数据就会被存储,否则它就会像savefinally那样保持在本地。根据你的建议,这是不可能的。那个么,有什么方法可以避免网络依赖性,并在本地保留相关对象(若并没有网络的话)?对象之间总会有一些关系,这一限制使得saveEventuall在大多数地方都不可用。谢谢Hector。我明白你的意思。我应该使用saveventurallysavecallback回调来实现我要做的事情。因为这将确保所有对象都存储在本地,直到网络不可用,一旦网络连接存在,保存对象并调用回调以存储关系。