【问题标题】:Where should my application store large number of PDF files on iOS?我的应用程序应该在 iOS 上的哪里存储大量 PDF 文件?
【发布时间】:2012-09-26 22:13:34
【问题描述】:

我正在编写一个 iOS iPad 应用程序,它将从网络下载数百个大型 PDF 文件并将它们缓存在 iPad 上以供离线使用。

在 iPad 上存放它们的最佳位置是哪里?本地文件系统、核心数据还是其他地方?我计划将核心数据用于索引和搜索机制(使用缩略图等),并且仅在用户特别请求完整文档时才访问 PDF 文档。

【问题讨论】:

  • 这个问题可能更适合apple.stackexchange.com
  • 以“best X”开头的问题通常会被关闭...
  • 这实际上是一个合理的问题,如果处理不当,您的应用可能会被 Apple 拒绝。请参阅下面的答案。

标签: objective-c ios core-data nsfilemanager


【解决方案1】:

这样做的最佳位置是 Documents 目录或 Cache 目录。 Documents 目录中的文档应该是用户生成的 内容,所以我相信这不是您要查找的内容。

相反,我认为您应该使用 Cache 目录,您可以使用此方法访问该目录:

- (NSString *)cacheDirectory {
{
    NSArray *pathList = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
    NSString *path    = [pathList objectAtIndex:0];
    return path;
}

请注意,如果您的设备上没有足够的空间,系统可能会清空 Cache 目录。根据我的经验,这几乎不会发生,但如果您想绝对、绝对地确定,您可能希望将文档存储在 Library 目录的子目录中这些文件永远不会被删除。

在这种情况下,您必须在目录和文件上设置do not backup 标志,否则您的应用被拒绝。

有关官方信息,请参阅the Apple guidelines(需要开发者帐户)。

【讨论】:

  • 所以用户下载的文件不被认为是“用户生成的”?
  • 来自@Nate_Hirsch:对不起,我没有足够的代表发表评论,或者我会但我可以编辑....我相信缓存目录会在内存启动时被操作系统清除而不会发出警告运行不足,因此这意味着您必须重新下载所有内容。我认为对于永久存储或直到被明确删除的存储,文档目录是要走的路。
  • @MyNameIsTooCommon :实际上,我只是添加了有关此信息的信息 ;) 我相信 Apple 不赞成将下载的(但不是用户生成的)文档存储在 Documents 文件夹中,尽管我不确定这是否会导致您的应用被拒绝。
  • @whatdoesitallmean:这就是为什么我还建议使用 Library 的子目录。这就是我们对我开发的一个应用程序所做的,它被很好地接受了。就像我说的,你必须设置一个特定的标志来告诉 iCloud 不要备份数据(不设置它会导致我们的应用程序被拒绝)。
  • @laucel:已经有一段时间了,所以从那以后答案可能已经改变了,我还没有检查过。 IIRC 如果您使用Library 的子目录而不是CacheDocuments,则必须使用该标志。而且您的应用在任何情况下都使用 iCloud 来备份用户数据——这是 Library 中没有设置 do not backup 标志的所有内容。
【解决方案2】:

您应该将它们保存在 /documents 文件夹中。该文件夹的目的正是为了存储无法重新下载的数据(或者太大而无法重新下载)。如果是临时数据或您可以轻松重新下载的数据,Apple 建议改用 /cache 文件夹。

您可以使用特定名称保存文件,只需将该名称保存在 CoreData 中即可找到它们。

【讨论】:

    【解决方案3】:

    我会将 PDF 保存在 Documents 文件夹下。 并创建一个核心数据 sqlite 数据库。 创建一个可能包含三个属性的核心数据实体:thumbNail、localURL 和 title。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-15
      • 1970-01-01
      • 2015-02-21
      • 1970-01-01
      • 1970-01-01
      • 2017-05-30
      • 2012-03-09
      • 2012-07-07
      相关资源
      最近更新 更多