2015-10-26 41 views
1

我遷移我的應用程序從CoreData和我留下深刻印象的東西可以多麼的簡單。我可以刪除很多代碼:)境界架構模式

讓我感到有點不舒服的一件事是,Realm遍佈我的應用程序,創建一個很大的依賴關係:我的應用程序有一個MVVM體系結構,如果只有模型將是Realm生活的地方。

就在遷移後,我送結果和對象列表我的視圖模型。擁有[Type]對象會不會更好?

您認爲如何?你如何構建你的應用程序?

回答

4

你將不得不作出在具有王國作爲一個依賴是否太多架構的風險你自己的決定,但也有幾個很好的原因,你應該使用的域對象/集合直接:

  1. 境界不是建立在SQLite的,而不是一個ORM。其結果是,當你訪問一個域對象或集合時,該數據是存儲器映射和懶惰訪問時只加載。這意味着如果你想將一個結果轉換成一個Swift數組Objects,或者將這些Objects的副本更改爲一個不依賴於Realm的類,那麼這將導致讀取/複製Result中的所有預先數據,而不是Realm爲您效力的方式。

  2. 默認情況下,Realm實例自動更新。這意味着通過直接使用Realm ObjectResult,您可以將視圖或案例視圖模型綁定到這些對象上的更改。 Realm實例在更新時發出通知(relevant docs),允許您更新視圖模型,然後更新視圖(例如,如果您有一個由Result支持的表視圖,則可以在表視圖上觸發reloadData關閉通知的,因爲Result例如現在有最新的對象)。或者您也可以使用特定Realm對象上的鍵值觀察來響應其屬性上的更改以更新視圖/視圖模型(relevant docs)。

希望這有助於塑造您對建築的想法。至於寫這篇文章的,我們正在研究的對象級的通知,這將使更多的數據綁定功能。你可以按照這個here的進度。