簡體   English   中英

我應該在哪里存儲我的iPhone應用程序的SQLite數據庫?

[英]Where should I store the SQLite DB for my iPhone app?

我在市場上有幾個iOS應用程序,在所有這些應用程序中,我有一個連接到應用程序的小型SQLite數據庫文件,為用戶提供我的數據。 安裝后,用戶可以通過更改某些選項來自定義此DB。

到目前為止,所有這些應用程序都將數據庫存儲在NSDocumentsDirectory 提交我的上次更新后,它被拒絕將數據存儲在錯誤的位置。 對於拒絕的應用程序,我將存儲位置更改為NSCachesDirectory 我現在擔心緩存將被清除並刪除用戶自定義。 該應用程序仍然可以運行,數據庫將被重新創建,但所有更改的表都將被重置,從而擾亂用戶。

這種類型的數據庫文件應該存儲在何處? 我把它放在Docs目錄中是對的嗎? 根據Apple的說法,Docs目錄是針對“關鍵數據”,它是用戶生成的數據或正確運行應用程序所需的數據。 我覺得它屬於那個類別,堅持我的用戶設置是正確的操作,但誰想等待上訴?

Apple的iOS文件系統編程指南將(application_home)/Library路徑描述為“為要備份但未向用戶公開的文件創建自定義子目錄”的位置。 (application_home)/Documents路徑被描述為“該目錄的內容可以通過文件共享提供給用戶”。

您的數據庫聽起來不像文檔,它們聽起來像用戶不應該知道的私有緩存。 我建議您創建一個目錄,如(application_home)/Library/Database並在那里保存文件。 你提到的緩存路徑聽起來不是我的最佳選擇。

在提交另一個應用程序之前,您應該查看iOS的整個文件系統編程指南

6年更新:

將數據存儲在NSCachesDirectory導致錯誤,正如預期的那樣,只要設備感覺到,用戶自定義數據就會被刪除。 經過多次嘗試與Apple應用程序評論爭論點后,我終於發布了一個更新,其中數據現在存儲在NSDocumentsDirectory中的自定義目錄中(應該如此),這解決了所有上述問題。

如果您的數據庫確實包含用戶生成的內容,則Documents目錄是其正確的位置。

但是,您提到您持久保存“用戶設置”...如果您持久存儲的數據更類似於設置或首選項,則它們應駐留在默認子系統中。 請參閱NSUserDefaults的文檔。

暫無
暫無

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

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