我正在尝试将我添加到名为“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);;
}
}
}
答案 0 :(得分:6)
您的Xcode项目应将includes
文件夹添加为文件夹参考,而不是组。
组只是为了保持组织有序而不是提供文件夹结构,因此在复制到设备时,所有文件最终都处于同一级别。
答案 1 :(得分:2)
查看已编译的应用程序包。
通常,Xcode生成的包是平的。这意味着虽然您添加的资源文件将被复制到捆绑包,但您创建的任何目录都不会,因此资源路径中没有“包含”目录。因此,您的源内容将为零。
因此,在您的情况下,请尝试使用:
NSString *sourcePath = [[NSBundle mainBundle] resourcePath];
编辑:很明显,添加文件夹参考也很有用(相信Ignacio Inglese)。