0

我需要在我的应用程序的第一次运行时从主包中复制一些png到文档文件夹。我需要它,因为我必须将这些图像的文件路径保存在核心数据实体中。从主包复制文件到文档目录(沙箱)

我尝试过这种方式,但它不起作用,有人知道为什么吗?

// to copy image from main bundle to documents folder 

NSString* mainBundleFilePath = [[NSBundle mainBundle] pathForResource:@"SbriciolataDiRicotta" ofType:@"png"]; 

NSArray *destPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [destPath objectAtIndex:0]; 

NSData *mainBundleFile = [NSData dataWithContentsOfFile:mainBundleFilePath]; 
[[NSFileManager defaultManager] createFileAtPath:documentsDirectory 
             contents:mainBundleFile 
             attributes:nil]; 

// to save the file path 

NSString*nomeImmagine = [[NSString alloc] initWithFormat:@"SbriciolataDiRicotta"]; 
NSString *pngFilePath = [NSString stringWithFormat:@"%@/%@.png",documentsDirectory, nomeImmagine]; 

感谢

回答

5

createFileAtPath预计为参数要创建文件的路径,而不是道路封闭目录的 。

备注:

  • 您还可以使用copyItemAtPath:toPath:error:没有装载 整个内容的文件复制到内存中。
  • 使用initWithFormat来分配一个常量字符串是不必要的。
  • stringByAppendingPathComponent:是追加路径组件的正确方法。
+0

我试图加载此:[[的NSFileManager defaultManager] copyItemAtPath:mainBundleFilePath toPath:documentsDirectory误差:无];但不起作用。 – Totka

+0

@Totka:正如我所说:参数是*文件路径*,而不是目录。 –

+0

如何获取文件路径?不是[destPath objectAtIndex:0]? – Totka

0

如何保存

-(void)saveImageWithID:(NSString*)ID{ 
    //[self saveImageWithID:<#(NSString *)#>]; 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 

    NSString* imageName = [[NSString alloc] initWithFormat:@"%@",ID]; 
    NSString *pngFilePath = [NSString stringWithFormat:@"%@/%@.png",documentsDirectory, imageName]; 

    UIImage *image = self.fieldImage.image; 
    NSData *data1 = [NSData dataWithData:UIImagePNGRepresentation(image)]; 
    [data1 writeToFile:pngFilePath atomically:NO]; 
} 

如何从沙箱

-(void) loadImageFromPathInsideView 
{ 
    // [self loadImageFromPathInsideView]; 
    Contatto* contact =[[DataManager sharedClass]dammiIlTuttoIlContattoDellaCella:self.indice]; 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES); 

    NSString* imageName = [[NSString alloc] initWithFormat:@"%@", contact.nome2]; 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString* path = [NSString stringWithFormat:@"%@/%@.png",documentsDirectory, imageName];; 
    UIImage* image = [UIImage imageWithContentsOfFile:path]; 
    self.fieldImage.image = image; 
} 
相关问题