将文件夹从主包复制到iphone中的文档目录

Man*_*han 5 cocoa-touch ios

我有一个应用程序,其中我的主包中有一个名为"Images"的文件夹.

在此文件夹中有另一个名为"Images1"的文件夹,其中包含一些图像.

当我的应用程序启动时,我想要文档目录中的文件夹"Images".

我想从文件夹"Images1"中获取图像.

但是我无法使用以下代码将文档放在文档目录的"Images"文件夹中.

编辑

       BOOL success1;
    NSFileManager *fileManager1 = [NSFileManager defaultManager];
    NSError *error1;
    NSArray *paths1 = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory1 = [paths1 objectAtIndex:0];
   NSString *writableDBPath1 = [documentsDirectory1 stringByAppendingPathComponent:@"Images/Images1"];
    success1 = [fileManager fileExistsAtPath:writableDBPath1];

    if (success1) return;
    // The writable database does not exist, so copy the default to the appropriate location.
    NSString *defaultDBPath1 = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"Images/Images1"];

    NSLog(@"Default : %@",defaultDBPath1);
    success1 = [fileManager1 copyItemAtPath:defaultDBPath1 toPath:writableDBPath1 error:&error1];

    if (!success1) {
        NSAssert1(0, @"Failed to create writable database file with message '%@'.", [error1 localizedDescription]);

    }
Run Code Online (Sandbox Code Playgroud)

请帮我.

kar*_*rim 4

您确定文件夹树中有这些文件吗?

\n\n
NSString *defaultDBPath1 = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"/Images/Images1"];\n
Run Code Online (Sandbox Code Playgroud)\n\n

通常当 xcode 创建一个包时,它会扁平化目录内容。因此,首先检查源文件夹中是否包含所有内容。即使您看到该文件夹​​显示在包资源管理器中,在应用程序中复制时,您也会看到图像位于根文件夹中。为了避免这种情况,当您在 xcode 项目中添加 Image 文件夹时,可以选中“创建文件夹引用”选项。

\n\n

但是,您的写入可能会因覆盖而失败。在这种情况下,您必须实现NSFileManager下面给出的委托方法。

\n\n
- (void) copyFolder {\n    BOOL success1;\n    NSFileManager *fileManager1 = [NSFileManager defaultManager];\n    fileManager1.delegate = self;\n    NSError *error1;\n    NSArray *paths1 = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);\n    NSString *documentsDirectory1 = [paths1 objectAtIndex:0];\n    NSString *writableDBPath1 = [documentsDirectory1 stringByAppendingPathComponent:@"/Images"];\n    success1 = [fileManager1 fileExistsAtPath:writableDBPath1];\n    if (success1 )\n    {\n\n        NSString *defaultDBPath1 = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"Images"];\n        NSLog(@"default path %@",defaultDBPath1);\n        success1 = [fileManager1 copyItemAtPath:defaultDBPath1 toPath:writableDBPath1 error:&error1];\n    } else {\n        if (![[NSFileManager defaultManager] fileExistsAtPath:writableDBPath1])\n            [[NSFileManager defaultManager] createDirectoryAtPath:writableDBPath1 withIntermediateDirectories:NO attributes:nil error:&error1];\n    }\n}\n\n- (BOOL)fileManager:(NSFileManager *)fileManager shouldProceedAfterError:(NSError *)error copyingItemAtPath:(NSString *)srcPath toPath:(NSString *)dstPath{\n    if ([error code] == 516) //error code for: The operation couldn\xe2\x80\x99t be completed. File exists\n        return YES;\n    else\n        return NO;\n}\n
Run Code Online (Sandbox Code Playgroud)\n