簡體   English   中英

在iOS4中存儲配置的最佳方法是什么?

[英]What's the best way to store configuration in iOS4?

我要編寫食譜應用程序。 在iOS4中存儲配置(配方列表)的最佳方法是什么? XML,JSON文件,Core Data或其他?

我會使用SQLite。 盡管CoreData在檢索方面有一些優勢,但實際上很難將數據加載到數據存儲中。 您甚至可以使用FMDB之類的方法包裝SQLite,如果這樣可以使您更輕松。

由於配方將是HTML,因此我將它們存儲在一個單獨的列中,並在類別,關鍵字,圖像BLOB等中添加其他列。我還將包括一個列,用於存儲用戶關於每個配方的個人注釋。

如果您的食譜結構更合理,我會將其作為JSON存儲在數據庫中,因為我發現XML在iOS上難以處理。

首先,這取決於數據的最初存儲位置。 您的食譜應用程序是否會保持一致,即包含應用程序中捆綁的所有收據,還是會根據用戶交互從網絡上下載它們? (例如,搜索區域收據或季節性收據,等等)。

來自網絡的收據(在線應用程序)

在這種情況下,您將根據要求從網絡下載收據。 最好的存儲方式是在應用程序運行時將其動態保留在內存中(內存緩存)。 一旦內存不足,您將立即清除內存緩存。 收據的加載將是懶惰的,就像收據在內存緩存中一樣,將從中檢索它;如果丟失(因為從未加載或清除),則將再次從網絡中檢索它。 通過設置網絡磁盤緩存(使用標准的Cocoa緩存系統或某些開源框架,例如MKNetworkKit或ASIHTTPRequest),可以實現巨大的改進。 在這種情況下,將按以下順序檢索收據:內存緩存,磁盤緩存,網絡。 該應用程序隨后將脫機工作(僅適用於已加載的收據),並且您將不必擔心收據存儲,因為磁盤緩存將解決此問題。

收據收據

通常,收據存儲圖可能比簡單的“收據”數組稍微復雜。 如果您將此收據鏈接到提供收據的餐廳,攝影表等,則可以具有收據表(“實體”),食材表,餐廳表。 在這種情況下,對象圖的復雜性使得CoreData是更好的解決方案。 您無需關心持久性存儲(通常為SQLite,並由CoreData框架進行管理)。 您可能需要在啟動時預加載CoreData存儲,這可以使用“開發應用”來完成,該應用讀取原始數據源(xml,json,csv),創建托管對象並將其保存在CoreData存儲中。 然后,您將獲得結果文件,並將其保存在捆綁軟件中。 如果您想使您的應用程序與網絡上的新收據保持同步,而不每次都發布應用程序更新,則可能會帶來額外的復雜性。 在這種情況下,最好的流程是:-將CoreData存儲放入應用程序捆綁包中-首次啟動時,將其復制到應用程序沙盒文檔區域(如果您不想向應用程序庫/緩存中添加額外的備份空間,則將其復制到應用程序庫/緩存中)。用戶;然后保護此區域免受OS緩存的自動清理)-每次您的應用從網絡上(自動或從應用內購買中)檢索新的收據時,都會解析收到的數據(xml,json,csv等)並將其保存在您的CoreData存儲。

注意

這個建議不是來自猜測,而是真實經驗。 我開發了幾個收據應用程序,尤其是在線收據應用程序。

恕我直言,我會使用SQLITE,因為它易於使用,並且您始終可以訪問組織良好的數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM