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

前端 未结 3 1130
我寻月下人不归
我寻月下人不归 2021-02-02 13:19

I have several iOS apps on the market and in all of them I have a small SQLite database file connected to the app to provide the user with my data. Once installed the user custo

相关标签:
3条回答
  • 2021-02-02 13:39

    Apple's file system programming guide for iOS describes the (application_home)/Library path as a place to "create custom subdirectories for files you want backed up but not exposed to the user". The (application_home)/Documents path is described as "the contents of this directory can be made available to the user through file sharing."

    Your databases don't sound like documents, they sound like private caches that users shouldn't know about. I recommend you create a directory such as (application_home)/Library/Database and save files there. The cache path you mention doesn't sound like the best option to me.

    You should really review the entire file system programming guide for iOS before submitting another app.

    0 讨论(0)
  • 2021-02-02 13:40

    6 year update:

    Storing the data in the NSCachesDirectory caused a bug, as expected, that the users customized data would erase whenever the device felt like it. After many many attempts at arguing the point with Apple app review, I was able to finally post an update where the data is now stored in a custom directory in the NSDocumentsDirectory (as it should be) which solved all of the aforementioned issues.

    0 讨论(0)
  • 2021-02-02 13:50

    If your database indeed contains user-generated content, then the Documents directory is its proper location.

    However, you mention that you are persisting "your users settings"... If the data you are persisting are more akin to settings or preferences, then they should reside in the Defaults subsystem. See the documentation for NSUserDefaults.

    0 讨论(0)
提交回复
热议问题