2017-02-04 165 views
0

我實施Realm的任務演示應用程序後的實時同步。獨特的領域容器對象

有一個虛擬容器用於容納List與模型。

該演示應用似乎不支持離線使用。

我想知道在給定此設置時會發生什麼情況,我在聯機和脫機設備上啓動應用程序,然後與脫機設備聯機。

我最初的期望是我會以2個容器(這將是一個無效狀態)結束,但是當我測試出奇時,最後只有1個容器。

但有時候我得到2個容器,一直未能確定是什麼原因造成的。

接下來的問題是,這究竟是如何工作的?我假設當我第一次同步脫機設備時,容器通常不會被複制的原因是它作爲同一對象處理,也許是因爲它沒有主鍵或其他東西?但爲什麼它有時會重複?這裏最好的做法是什麼?如果存在重複,那麼我是否可能必須使用主鍵或連接後進行檢查?如果是,請手動合併容器?

回答

1

此刻,Realm Tasks僅在嘗試添加新的基本列表容器對象之前檢查默認Realm是否爲空。如果同步過程在此檢查發生時尚未完成,則創建第二個容器是合理的。在本地網絡上測試應用程序時,通常這不是問題,因爲下載速度非常快,但我們絕對應該對此進行更徹底的測試。

添加一個主鍵肯定會有幫助,因爲這意味着如果第二個列表是在本地創建的,它將與來自服務器的版本合併。

當第二個設備通過新的進度通知系統連接到用戶的Realm Mobile Platform帳戶時,我們最近一直關注'入職'流程。更合理的方法是等待同步完成登錄後的初始下載,然後檢查是否存在對象。文檔完成後,我們很可能會修改Realm Tasks如何處理此問題。

演示應用程序(以及Realm Mobile Platform)不支持脫機,但僅在用戶第一次登錄後(即最初生成這些容器對象時)才支持。在此之後,應用程序可以脫機使用,並且在此期間所做的任何更改在下次聯機時都會同步。

我們正在計劃構建'匿名用戶'功能,用戶可以立即開始使用該應用程序(甚至是離線),然後他們在登錄之前所做的任何更改(由於它們處於脫機狀態)都會轉移到用戶帳戶後,他們這樣做。

+0

謝謝!該修復似乎是添加主鍵。我想知道爲什麼合併大多數時候沒有它的作品。也許有一種內部對象標識與主鍵類似使用? – Ixx