簡體   English   中英

將文件從主捆綁包復制到文檔目錄(沙箱)

[英]Copy file to documents directory (sandbox) from main bundle

我需要在應用程序的第一次運行時從主捆綁包中將一些png復制到documents文件夾中。 我需要它,因為我必須將這些圖像的文件路徑保存在核心數據實體中。

我以這種方式嘗試過,但沒有用,有人知道為什么嗎?

// 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];

謝謝

createFileAtPath希望將要創建的文件路徑(而不是封閉目錄的路徑)作為參數。

備注:

  • 您也可以使用copyItemAtPath:toPath:error:復制文件而不將全部內容加載到內存中。
  • 不需要使用initWithFormat來分配常量字符串。
  • stringByAppendingPathComponent:是添加路徑組件的正確方法。

如何保存

-(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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM