目标C:如何在应用程序文件夹外存储sqlite3数据库?

时间:2012-05-08 06:05:23

标签: objective-c ios sqlite ipa

我正在开发一个应用程序,我正在使用SQLite 3在本地存储我的数据。现在我将来会更新相同应用程序的版本,我将不得不在删除后使用下载和安装新的IPA文件进行更新它只是。

但问题出现了。客户希望在不使用Web服务器的情况下,在较新版本中替换先前版本中本地存储的数据。

我浏览了several links并且所有结果都显示为否定回复仍然我想知道是否有任何方法可以帮助我将数据库存储在应用程序文件夹之外,以便即使删除应用程序也不会影响数据库,较新的版本可以从同一个数据库中获取数据。或者其他任何方式?感谢您提前回复。

4 个答案:

答案 0 :(得分:2)

您应该将数据库存储在Documents文件夹中,因为其中的所有内容都保留在那里,即使应用程序通过应用程序商店更新(如果您删除应用程序,那么这也会被删除..所以请保留此项记住)

你可以在名为Documents的{​​{1}}文件夹中创建一个单独的文件夹,并将你的文件存储在里面..你可以创建一个这样的路径..

Database

修改

由于您希望在删除应用后保留它,我认为由于应用程序的沙盒功能,您不能在设备上执行此操作,但您还有一个选项..

您可以在个人服务器上备份此数据库,每次安装该应用程序时,如果该特定用户的数据库存在与否,则应查询服务器。如果它存在,您可以下载并将其存储在文档目录中,否则您将为其提供一个新数据库。您可以偶尔执行此备份,或者为用户自己提供同步选项。希望这会有所帮助。

答案 1 :(得分:2)

iOS数据存储指南。

iCloud包括备份,它每天通过Wi-Fi自动备份用户的iOS设备。除了应用程序包本身,caches目录和临时目录之外,备份应用程序主目录中的所有内容。购买的音乐,应用程序,书籍,相机胶卷,设备设置,主屏幕和应用程序组织,消息和铃声也会备份。由于备份是通过无线方式完成的并存储在iCloud中,因此最好尽量减少为应用程序存储的数据量。大文件会延长执行备份所需的时间,并消耗更多用户可用的iCloud存储空间。

为确保备份尽可能高效,请务必按照以下准则存储应用的数据:

  1. 只有用户生成的文档和其他数据,或者应用程序无法重新创建的文档和其他数据应存储在/ Documents目录中,并由iCloud自动备份。

  2. 可以重新下载或重新生成的数据应存储在/ Library / Caches目录中。您应该放在Caches目录中的文件示例包括数据库缓存文件和可下载内容,例如杂志,报纸和地图应用程序使用的文件。

  3. 仅临时使用的数据应存储在/ tmp目录中。虽然这些文件没有备份到iCloud,但请记住在完成这些文件后删除这些文件,这样他们就不会继续占用用户设备上的空间。

  4. 使用“不备份”属性指定应保留在设备上的文件,即使在低存储情况下也是如此。将此属性与可以重新创建的数据一起使用,但即使在低存储情况下也需要保留,以使应用程序正常运行,或者因为客户希望在脱机使用期间可以使用该数据。此属性适用于标记文件,无论它们位于何种目录中,包括Documents目录。这些文件不会被清除,也不会包含在用户的iCloud或iTunes备份中。由于这些文件确实使用设备上的存储空间,因此您的应用程序负责定期监视和清除这些文件。了解更多

  5. 有关更多信息,请阅读iOS应用程序编程指南。

答案 2 :(得分:0)

如果您想在删除应用时保留应用数据,您基本上有两种选择:

  • 将应用数据存储在您的服务器上
  • 将应用数据同步到云端服务,例如iCloud

移除应用后,无法在设备上保留应用数据(

)。

答案 3 :(得分:0)

您不能将任何用户数据存储在Documents文件夹之外,因为Apple反对它。如果您确实将用户数据存储在其他位置 - 您将在Apple应用审核期间拒绝您的应用。