NSDocumentDirectory files disappear in ios

人盡茶涼 提交于 2019-12-22 08:16:13

问题


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


回答1:


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



来源:https://stackoverflow.com/questions/31452098/nsdocumentdirectory-files-disappear-in-ios

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!