2016-05-07 91 views
0

我對Swift非常新,來自Restkit,發現了Siesta,它似乎是一個解決常見問題的穩固庫。 目前我正試圖弄清楚如何處理我的應用程序的模型層及其持久性。 CoreData是Apple推動的一種方法,而像MagicalRecord這樣的方法使得它更容易。Siesta的模型架構和持久性

但是,午睡不處理CoreData,這是我不清楚緩存是如何工作的(或有多遠實現:

午睡目前不包括EntityCache的任何實現,但未來的版本。將

http://bustoutsolutions.github.io/siesta/api/Caching.html

從例子中,我可以看到你剛纔斯威夫特代碼定義模型: https://github.com/bustoutsolutions/siesta/blob/master/Examples/GithubBrowser/Source/Model/User.swift

所以:這是模型層的最佳方法還是CoreData/MagicalRecord有一個角色?在這種情況下如何緩存完成,它會在應用程序啓動之間生存嗎?

謝謝!

回答

0

第一個問題是:本地數據庫(如Core Data或Realm)會爲您解決什麼問題?根據答案,您可能不需要一個 - 或者Siesta可能無法爲您工作。

「我只需要緩存」

午睡確實在內存中緩存是免費的。如果您只需要在應用程序運行時加速緩存(即防止冗餘請求,在VC中顯示數據等),那麼您可能不需要打擾任何EntityCache或本地數據庫。

大多數應用都屬於這一類。

「我需要脫機訪問」

如果你需要離線訪問持久高速緩存或做一個快速啓動與陳舊的數據,這就是EntityCache是​​。您仍然可能不需要本地數據庫;一個簡單的鍵值緩存就可以做到。不幸的是:

  1. 直到Siesta 1.0完成後,公共EntityCache實現才超出範圍。
  2. Siesta當前的緩存API目前不適合使用模型。 更新:緩存API現在可以緩存模型,解析的JSON或其他ADT或原始字節。

「我需要一個可查詢數據庫」

也許你需要的是不只是緩存。也許你想從許多不同的API請求中獲取數據並進行查詢,例如「選擇所有先前提供的位於莫桑比克的供應商的小部件」。這顯然是數據庫的一項工作。

在這一點上,你不只是緩存;您保持本地狀態與遠程狀態同步,並且獨立查詢遠程和本地副本。對於非常情況下的解決方案,這是一個混亂的問題,並且遠遠超出了Siesta的範圍。

可以使Siesta可以與本地數據庫一起工作,但會變得混亂。如果您可以避免突變本地數據庫,使其成爲服務器權威數據的單向鏡像,那麼您的生活將變得最簡單。

+0

感謝您的澄清!說實話,沒有真正的「需求」,但更多的是可用性。緩存是一個勝利,因爲你給的原因。離線訪問是一種勝利,因爲用戶無法訪問互聯網。具體而言,我的數據可以更改,但並不經常。所以後臺刷新會爲我做。 – zwervertje