iOS 将文件从主包复制到文档目录
Posted
技术标签:
【中文标题】iOS 将文件从主包复制到文档目录【英文标题】:iOS copy files from main bundle to documents directory 【发布时间】:2012-02-10 15:25:49 【问题描述】:我正在尝试将添加到名为“includes”的文件夹中的文件复制到名为“includes”的文档目录上的文件夹中。
resContents
的值为零。为什么?
- (void)copyResources
NSString *sourcePath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"includes"];
NSString *destPath = [[self applicationDocumentsDirectory] stringByAppendingPathComponent:@"includes"];
NSArray* resContents = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:sourcePath error:NULL];
for (NSString* obj in resContents)
NSError* error;
if (![[NSFileManager defaultManager] copyItemAtPath:[sourcePath stringByAppendingPathComponent:obj] toPath:[destPath stringByAppendingPathComponent:obj] error:&error])
NSLog(@"Error: %@", error);;
【问题讨论】:
【参考方案1】:您的 Xcode 项目应将您的 includes
文件夹添加为 文件夹参考 而不是 组。
组只是为了使事情井井有条,而不是提供文件夹结构,因此在复制到设备时,所有文件最终都处于同一级别。
【讨论】:
【参考方案2】:查看已编译的应用程序包。
通常,Xcode 生成的包是扁平的。这意味着尽管您添加的资源文件将被复制到包中,但您创建的任何目录都不会,因此资源路径中没有“包含”目录。因此,您的源内容将为 nil。
所以在你的情况下,尝试使用:
NSString *sourcePath = [[NSBundle mainBundle] resourcePath];
编辑:嗯,显然添加文件夹引用也有效(感谢 Ignacio Inglese)。
【讨论】:
好的,但是会列出所有文件,包括 .nib 和 plists!我只需要从特定文件夹中选择文件。不可能? 它是bundle中的扁平结构。 @Jaume 那么你必须选择你需要的文件(可能通过一个通用的扩展名,或者在你的代码中保留一个文件名列表)。以上是关于iOS 将文件从主包复制到文档目录的主要内容,如果未能解决你的问题,请参考以下文章