2013-03-10 21 views
2

我已經開始對Android應用程序最近使用Parse庫。我想使用saveEventually存儲用戶聯繫人,然後使用ParseRelation將相同的用戶關聯起來。由於有多個聯繫人映射到用戶,我使用下面的代碼來處理我的保存功能。如何確保使用saveEventually()保存ParseObject和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(); 

這裏我使用saveEventually()每個有效實體(的parseObject),然後加入同向關係。稍後一旦所有對象都添加到ParseRelation中,最後我調用saveEventually()給ParseUser將所有關係存儲到Parse。

這種方法是否正確?我在relation.add(entity [entityIndex])處得到以下異常;

關係中的所有對象都必須具有對象標識。

看來,這表明某些網絡連接問題,ParseRelation沒有得到唯一對象ID爲每個的parseObject,但我假設這saveEventuall()將處理這種情況以及與ParseRelation

請建議。我正在使用解析庫版本1.1.11

謝謝。

回答

4

添加到ParseRelation的所有對象必須先保存。 saveEventually調用是非阻塞的,所以當添加到ParseRelation中時,執行到達下一行的時間不太可能已經保存了對象。

由於您需要確保首先保存對象,因此應該使用saveInBackground而不是saveEventually。然後確保將保存的對象添加到saveInBackground的SaveCallback中的關係中。這將確保對象在添加到關係之前已被保存。

+0

謝謝Hector。很抱歉,遲到回覆。我明白你的建議。但我不希望該操作與網絡相關(用戶保存數據時)。我希望每當有網絡連接時,數據就會被存儲起來,否則就像saveEventually()完成一樣。根據您的建議,ParseRelation無法實現。那麼,有沒有什麼辦法可以避免網絡依賴性,如果不是網絡,那麼本地仍然保留相關對象?在對象上總會有一些關係,這個限制使saveEventuall()在大部分地方都不可用。 – Jit 2013-03-13 17:56:33

+0

謝謝Hector。我明白了你的觀點。我應該使用saveEventually(SaveCallback回調)來實現我正在嘗試做的事情。因爲這將確保所有對象都存儲在本地,直到網絡不可用,並且一旦有網絡連接,就保存對象並將回調調用到存儲關係。 – Jit 2013-03-14 05:00:33

相關問題