2017-04-25 84 views
0

我正在研究提供脫機功能的應用程序。 我的應用程序的工作流程是類似以下內容:如何使用Realm處理脫機應用程序的主鍵更新問題?

1 - 用戶在數據庫中創建一個新的對象,而離線

2-該對象並獲得一個臨時(負)ID,如應用程序不還知道什麼 最終ID服務器將分配給對象

3-用戶在線時再次

4-服務器接收新的對象和最終的ID分配給它

/應用程序同步數據庫10

5-應用程序從服務器收到最終的id並更新對象id到最後一個

我正在使用不允許更新主鍵的領域數據庫。我想你的建議重新回到這個問題,如何處理這種情況。

+0

是否有多個用戶對同一個數據感興趣,或者用戶是否可能刪除他的本地數據,並且必須再次從服務器獲取數據? –

+0

@CL。問題是一個表記錄與整個數據庫連接。如果用戶在幾天內沒有上線並且用戶創建數百個脫機記錄,並且這些記錄在創建整個樹時依賴於其他記錄。 –

+0

我並沒有問這個問題,但是否有從服務器到客戶端的新數據同步。 –

回答

0

使用@PrimaryKey在你想作爲主鍵的id。

+0

我不問有關設置主鍵。請再次看問題以理解問題 –

+0

對不起,我需要從db中刪除所有臨時ID的項目,然後插入新項目。您無法更新主鍵。 –

1

您的應用程序已經有一個功能從服務器,你可以重複使用下載新的數據: 應用程序上傳的所有臨時對象到服務器後,服務器已經證明,它已經存儲了他們,只是刪除所有臨時對象從你的本地數據庫,並做一個服務器→客戶端同步。

或者,不要使用臨時對象,即更改主鍵,以便在應用程序創建它時它已經是唯一的;王國文檔是

您使用的字符串屬性,因爲它更容易生成保證是唯一的(特別是在蘋果和.NET框架的UUID類)值recommends

相關問題