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

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

在这个文件夹中有另一个名为“Images1”的文件夹,其中包含一些图像。

当我的应用程序启动时,我想在文件目录上的文件夹“图像”。

我想要从文件夹“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]); } 

请帮帮我。

你确定你的文件夹树中有文件吗?

 NSString *defaultDBPath1 = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"/Images/Images1"]; 

通常当xcode制作一个包时,它会压扁目录内容。 所以首先检查你的源文件夹中的所有东西。 即使您看到文件夹显示在您的包资源pipe理器中,但在应用程序中复制时,您将看到图像位于根文件夹中。 为了避免这种情况,当你添加图像文件夹,在你的Xcode项目中,你可以select“创build文件夹参考”选项。

但是,由于覆盖,写入可能会失败。 在这种情况下,你必须为NSFileManager给出的NSFileManager实现一个委托方法。

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