【问题标题】:Right place to store the application data in IOS在IOS中存储应用程序数据的正确位置
【发布时间】:2018-05-29 20:50:29
【问题描述】:

目前我正在将我的应用程序数据(媒体)保存到 CacheDirectory 即

/var/mobile/Applications/BEAFC76C-C450-4A3A-9765-A0385A9580F3/Library/Caches

一切都很顺利。但最近我收到一个错误报告,应用程序数据已被删除。当我搜索它时,我得到了这个Apple Doc。据此,DocumentsDirectory 应该是存储用户/应用程序数据的理想场所。

将用户数据放在 /Documents/ 中。用户数据是任何 您的应用程序无法重新创建的数据,例如用户文档和 其他用户生成的内容。

并且不应该使用缓存来存储应用程序无法复制的用户数据。

将数据缓存文件放在 /Library/Caches 目录。您应该放在此目录中的文件示例包括 (但不限于)数据库缓存文件和可下载的 内容,例如杂志、报纸和地图应用程序使用的内容。您的 应用程序应该能够优雅地处理缓存数据的情况 被系统删除以释放磁盘空间。

存放它的理想位置应该是什么。

编辑:

我有一个应用程序允许用户在应用程序中存储视频和照片。为此,我使用了 CacheDirectory。但是我收到了数据(视频/照片)被删除的错误报告。我得出的结论是设备本身正在删除数据以提供空间。

其次,我也想给 iTunes 分享功能。所以只有特定的文件必须存储在 DocumentsDirectory 中。有些文件永远不能公开,有些文件必须共享。存储文件的理想方式应该是什么。

【问题讨论】:

  • 我不确定你在问什么。您链接的文档提供了有关应将哪种文件存储在何处的指导。如果您对您的数据适合什么有具体问题,您需要向我们提供一些有关您存储的内容的信息。
  • @JesseRusak 请查看编辑。
  • 您的答案在您自己的问题中。 “将用户数据放在 /Documents/ 中”......我不确定你还想要什么。用户的视频和照片是用户数据。
  • Caches 目录用于存放操作系统可以在需要时删除的内容,以恢复空间。您应该只将它用于您可以以某种方式重新获得的数据。例如,已下载的图像可以(自动,无需用户干预)在需要时重新下载。
  • (您似乎掌握了所有信息,但您不相信它。承认您搞砸了并继续前进。)

标签: ios iphone ipad nsdocumentdirectory nscache


【解决方案1】:

Library/Application Support Folder 是您应该使用的文件夹。

此目录并不总是存在,因此您可能需要创建它。 您可以启用或禁用是否要使用 iTunes 备份此数据。

即使您启用文件共享,也无法访问此数据。只有您放在 Document 目录中的数据才会与 iTunes 共享共享,因此您仍然可以保护您的数据并对其进行备份。 Apple's documentation

【讨论】:

    【解决方案2】:

    对于您希望通过 iTunes 共享的文件,请使用 Documents (NSDocumentDirectory)。

    Application Support (NSApplicationSupportDirectory) 用于您希望对用户隐藏但仍会被操作系统备份且永不删除的文件。

    【讨论】:

      【解决方案3】:

      从 iOS 5 开始,Apple 表示将所有类型的文件保存在 Documents Directory 中不再是一件好事 - 如果您这样做,您的应用肯定会被拒绝,因为该文件夹已备份到 iTunes 和 iCloud,除非另有规定。

      它说我们应该将文件保存到缓存或 Tmp 目录中 - 这些不会被备份,但这不是一件好事,因为如果内存不足,这些目录中的文件可能会消失。

      所以我认为最好的做法是将应用中一直需要的重要文件保存到 Documents Directory 中,并将它们标记为不备份,like this

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-08-05
        • 1970-01-01
        • 1970-01-01
        • 2021-01-22
        • 2011-12-07
        • 1970-01-01
        相关资源
        最近更新 更多