【问题标题】:Objective C : How to store the sqlite3 database outside the application folder?目标 C:如何将 sqlite3 数据库存储在应用程序文件夹之外?
【发布时间】:2012-05-08 14:42:40
【问题描述】:

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

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

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

【问题讨论】:

    标签: objective-c ios sqlite ipa


    【解决方案1】:

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

    您可以在Documents 文件夹中创建一个名为Database 的单独文件夹并将您的文件存储在其中。您可以创建这样的路径..

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; // Get documents folder
    NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:@"Database"];
    

    编辑:

    由于您想在删除应用程序后保留它,由于应用程序的沙盒功能,我认为您无法在设备上执行此操作,但您仍然有更多选择..

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

    【讨论】:

    • 谢谢 ankit,我已经这样做了。但是我想以这样的方式存储我的数据库,即使删除应用程序也会保留数据库的副本。任何解决方案?
    【解决方案2】:

    iOS 数据存储指南。

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

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

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

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

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

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

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

    【讨论】:

    • 我真的不认为你可以在这里发布……至少要在 Apple 网站上查看这些内容,我必须以 iOS 开发者身份登录。
    【解决方案3】:

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

    【讨论】:

    • 你能给我一些链接或类似的东西吗?这对我有很大帮助。
    【解决方案4】:

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

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

    删除应用后,无法 (AFAIK) 将应用数据保留在设备上。

    【讨论】:

    • 是保证工作的第二种方式..?因为我想知道如果应用程序被删除并且之后与 iCloud 执行同步,那么它的所有内容也会被删除......?
    • iCloud API 使用一个特殊的守护进程与服务同步。我相信即使您删除应用程序,它仍然会同步更改,但是您显然必须仔细测试它是否对您的应用程序的功能很重要。
    • 我可以确认 iCloud 解决方案可以正常工作。只要您在删除应用程序之前不删除文件的本地副本(您的 db 文件),那么您的 db 文件仍然会在您的 iCloud 容器中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-13
    • 2020-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多