2012-01-18 55 views
0

我的情況是,我有一個通過odata與sql數據庫通信的通用應用程序。當用戶通過線路檢索數據時,我想將其保存到設備中,以便如果用戶停止應用程序或應用程序崩潰時,我可以補充保存的設備數據,並且在應用程序時不必重新檢索數據重新開始。iOS將Web服務數據保存到設備

我的問題是這個sitatuation是更有利於用戶co​​redata將數據保存到sqllite分貝或我應該將數據保存到文檔目錄?數據可以被串行化成一個NSData對象,它可以從我讀過的內容直接保存到設備中,而將NSData對象保存爲sqllite並不是它的設計目的。

我正在尋找兩個選項中性能最高的選項,以及不會限制尺寸限制的選項。

期待您的任何建議,可以給我。

在此先感謝

+0

數據的性質是什麼,你將如何使用/呈現它?爲了準確地回答這個問題,這一點信息是高度相關的。 – nickbona 2012-01-18 21:32:08

+0

如果你走的是核心數據/ sqllite路由,它不會限制你想要存儲的二進制數據,而不是將它存儲爲一個字段,你可以將它存儲在一個文件中並將文件路徑存儲在覈心數據字段中 – Daniel 2012-01-18 21:32:32

+0

數據是用於整個企業系統的數據。因此,數據將以列表,組合,綁定等形式呈現,因此將不斷檢索和更新。 – Matt 2012-01-18 21:42:30

回答

1

如果數據的尺寸足夠小,以適應在內存中,沒有任何問題,那麼你可能會得到一個序列化NSData對象的最佳性能。

但是,如果數據達到了壓縮內存使用率的程度,那麼您將需要使用類似於Core Data或sqlite的內容來將其保存到磁盤,並且只在當前使用的內存中加載對象。

+0

通過「序列化NSData對象」的意思,將NSData對象保存到磁盤並在需要時加載它? – Matt 2012-01-18 21:43:16

+0

是的,保存到磁盤,然後從磁盤恢復。假設你實際上將NSData解析爲objective-c對象,你可以使用各種方法,比如NSKeyedArchiver http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSKeyedArchiver_Class /Reference/Reference.html。 – Kekoa 2012-01-18 21:56:52

+0

爲你的迴應歡呼。你知道應用程序可以存儲到磁盤有多少限制嗎?還是僅受設備上可用空間的限制?謝謝 – Matt 2012-01-18 22:01:43