2017-04-11 53 views
1

我有一個realmList,比如realmObject中的studentsList,比如說class。我想申請一個給定班級的學生列表,並在studentList中更新它。 服務器返回的studentList可能包含舊的和新的學生。所以我希望我的realmList能夠爲老學生更新信息,以及增加新學生(如果有的話)。在RealmList中添加/更新realmObject

我做了什麼,

  1. 開始與大小循環== serverReturnedStudentList.size()
  2. 環路內創建學生和領域增加(使用realm.copyToRealmOrUpdate(學生))
  3. 從步驟2接收到託管學生對象。
  4. 獲取X類的學生列表,並檢查studentList是否包含該託管對象。
  5. 如果不是,則將學生添加到studentList中,否則什麼也不做。

它正在按預期工作,但我知道這不是正確的做法。如果我跳過「包含」檢查(@ step4)並直接將管理對象添加到realmList,則多個條目將以realmList開始顯示。

什麼是處理這種情況的最佳方法?

另一個問題是,我在每個類下有'n'個類和'x'部分。我並行發出nx個請求,當我嘗試啓動asyncExecutions n次,我得到了池大小限制異常(這是顯而易見的),我無法在UI線程上運行,因爲我的UI在3-5秒內無響應(while每個studentList的循環執行executeTransaction爲每個學生)

任何幫助/建議將不勝感激。

在此先感謝。乾杯!

+0

'多個條目開始在realmList中顯示。處理這種情況的最佳方法是什麼?'你有'@ PrimaryKey'嗎? – EpicPandaForce

+0

另外,不要爲每個學生執行交易,我不確定你爲什麼這樣做。 – EpicPandaForce

+0

@EpicPandaForce是的,我確實有一個主鍵,每個學生對象,並進一步澄清,只有一個對象爲學生說x,但有多個條目是studentX在studentList,如果我跳過studentList.contains(studentX)之前的步驟將studentX添加到studentList。 – AndoAiron

回答

0

該方法對我來說似乎沒問題。有一件事你需要明白,copyToRealmOrUpdate()更新你的realmList不會複製相同的條目數據主鍵

+0

是的我理解copyToRealmOrUpdate()和背後的概念,並且我確實有每個學生對象的主鍵並進一步闡明,學生說只有一個單一的對象x,但studentList中有多個條目用於studentX在將studentX添加到studentList之前,我跳過studentList.contains(studentX)步驟。 – AndoAiron

+0

所以我讓這個正確的 - 有studentList和其他包含許多條目的studentList。我現在假設你用studentList.contains(studentX)將studentX從列表中分離出來並嘗試更新studentX。是嗎? –

+0

我沒有完全明白你的意思。我想要的是將學生添加到studentList中,如果沒有出現在列表中或者只是爲了更新列表中已存在的學生的信息。如果我們有一個已經存在/附加到studentList的學生,並且我執行了copyToRealmOrUpdate(unManagedStudent),則信息將被更新並且不需要做其他事情。但是如果這樣的學生不在studentList中,我仍然需要執行copyToRealmOrUpdate(unManagedStudent)以及將nowManagedStudent添加到realmList的另一個步驟。 – AndoAiron