我可以将下载的文件保存到 iPhone 中的 NSCacheDictionary 吗?

Posted

技术标签:

【中文标题】我可以将下载的文件保存到 iPhone 中的 NSCacheDictionary 吗?【英文标题】:Can I save the downloaded files to NSCacheDictionary in iphone? 【发布时间】:2012-08-08 04:51:42 【问题描述】:

我正在使用 NSURLConnection 通过我的应用程序下载一些 mp3 文件。其实我可以在哪里保存下载的文件。有人说保存到 NSDocumentDirectory 会导致应用被拒绝。

我可以将文件保存到 NSCacheDictionary 并从 iTunes 中检索吗?

我使用这段代码将文件保存到 NSCacheDictionary

   NSString *cachesPath = [NSSearchPathForDirectoriesInDomains(
                                                            NSCachesDirectory, NSUserDomainMask, YES)
                        objectAtIndex: 0];
   NSString *documentsDirectoryPath = [cachesPath stringByAppendingPathComponent:@"music.mp3"];
  [receivedData writeToFile:documentsDirectoryPath atomically:YES];

我可以这样使用吗?

【问题讨论】:

【参考方案1】:

如果您将文件保存到NSCacheDictionary,您将无法从 iTunes 中检索它们。

编辑: 您可以将 mp3 文件存储到 NSDocumentDirectory 并设置“不备份”标志 要设置标志,您可以查看Technical Q&A QA1719。

有关更多信息,您可以查看the docs。

具体来说:

将此属性用于可以重新创建但需要重新创建的数据 即使在存储空间不足的情况下也能保持您的正常运行 应用程序或因为客户希望它在离线使用期间可用。 此属性适用于标记的文件,无论它们位于哪个目录 都在,包括 Documents 目录。

【讨论】:

那么我在哪里可以保存我的 mp3 文件,并且想稍后从 iTunes 访问它。 好的,我想我可以使用“在 ios 5.1 上从备份中排除文件”,从 iTunes 备份文件时有什么问题吗? @neerajPK 没有。我不知道有任何问题。它会像魅力一样起作用。 :) 还有一个疑问,我使用了链接中的第一个代码,但在 assert([[NSFileManager defaultManager] fileExistsAtPath: [URL1 path]]); ,但是当我尝试使用第二个代码时,没有发现问题。我可以用第二种方法吗? @neerajPK 如果您的应用程序在 iOS 5.1 上运行,您应该使用它自己的第一种方法,您不应该使用第二种方法。正如文档中建议的那样。如果您的应用程序在 iOS 5.0.1 上运行,您应该使用第二种方法。 iOS 5.0.1 以下不支持从备份中排除文件。对于崩溃,您能否确认两个 URL 相同且正确。要创建 URL,您应该使用 + (id)fileURLWithPath:(NSString *)path 方法。

以上是关于我可以将下载的文件保存到 iPhone 中的 NSCacheDictionary 吗?的主要内容,如果未能解决你的问题,请参考以下文章

将文件下载到 iPhone

问题 - 将图像文件保存到 iphone 中的资源文件夹

如何将图像从相机保存到 iPhone 画廊中的特定文件夹?

是否可以将音乐文件存储在 iPhone 本地存储中?

将 mp3 数据保存在 iPhone 上的文件中

iPhone SDK:将流式音频文件保存到 Documents 文件夹