iOS将文件从主包复制到文档目录

时间:2012-02-10 15:25:50

标签: iphone objective-c ios xcode cocoa-touch

我正在尝试将我添加到名为“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);;
        }
    }
}

2 个答案:

答案 0 :(得分:6)

您的Xcode项目应将includes文件夹添加为文件夹参考,而不是

组只是为了保持组织有序而不是提供文件夹结构,因此在复制到设备时,所有文件最终都处于同一级别。

答案 1 :(得分:2)

查看已编译的应用程序包。

通常,Xcode生成的包是平的。这意味着虽然您添加的资源文件将被复制到捆绑包,但您创建的任何目录都不会,因此资源路径中没有“包含”目录。因此,您的源内容将为零。

因此,在您的情况下,请尝试使用:

NSString *sourcePath = [[NSBundle mainBundle] resourcePath];

编辑:很明显,添加文件夹参考也很有用(相信Ignacio Inglese)。