Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

NSDocumentDirectory files disappear in ios

I want to save a mp4 video in my folder but when I open again the app, this file is nil. But when I save the file, I can open it, so it seems that it disappears from the folder.

Save:

NSData *videoData = [NSData dataWithContentsOfURL:exportUrl];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *tempPath = [documentsDirectory stringByAppendingFormat:@"/%@",videoName];

self.path_video_to_save = tempPath;

BOOL success = [videoData writeToFile:tempPath atomically:YES];

if (success) 
    NSLog(@"saved");
else
    NSLog(@"not saved!!!!!!!!!!!!!!");

I get the success in true so it's ok and I can play my video well.

NSString *path_video = [dict objectForKey:@"path"]; //dictionary where I save the path, the same before and after closing app

NSData *videoData = [NSData dataWithContentsOfURL:[NSURL fileURLWithPath:path_video]];

if (videoData == nil){
    NSLog(@"DATA NULL");
}
else
    NSLog(@"DATA OK");

    NSLog(@"PATH:%@", path_video);

    self.player = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL fileURLWithPath:path_video]];

and at this point it work fine.

But when I close and open again the app and I get the path, my app crash and I have the log "DATA NULL" I don't understand why when I close my app the file disappear... what's up?

thanks

like image 716
cyclingIsBetter Avatar asked Jul 16 '15 10:07

cyclingIsBetter


1 Answers

This is because in iOS 8 + the name of the Application folder is renamed each time you launch it.

Check it in /Users/"your username"/Library/Developer/CoreSimulator/Devices/"device name"/data/Containers/Data/Application/"application name" (Test in simulator).

So, you have to save the path without the document directory. And when you are trying to retrieve the path you have to add the document directory before the path you saved previously.

Like let your custom folder name is "Save_Video" and file name is "video_01.mp4". Your file saving path will be "Application document directory"/Save_Video/video_01.mp4

Then you have to store only "Save_Video/video_01.mp4"(in Database/ NSUserDefaults) and when you are retrieving the file the path should be

"Application document directory"/Save_Video/video_01.mp4

like image 199
Sk.Azad Avatar answered Nov 08 '22 01:11

Sk.Azad