我可以将下载的文件保存到 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 吗?的主要内容,如果未能解决你的问题,请参考以下文章