iOS 8中每次启动时的文档或缓存路径更改

Dev*_*007 13 ios ios8 ios8.1

当我在我的应用程序中下载视频并将其保存在本地缓存/文档路径中并在必要时显示.它在iOS 7中工作,但是avplayer没有在iOS 8及更高版本中显示视频.正如我已经读到的那样,iOS 8中的每次启动都会更改文档/缓存路径.问题是,我必须下载一次视频并在我的应用程序中多次显示.那么我怎么能一次又一次地到达相同的路径来在应用程序中显示视频.

Here is my code:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
// NSLog(@"Document folder: %@", paths);
NSString *documentsDirectory = [paths objectAtIndex:0];
   NSLog(@"Document folder: %@", documentsDirectory);
Run Code Online (Sandbox Code Playgroud)

在日志中,每次启动时都会有不同的路径.任何帮助,将不胜感激.谢谢

Dev*_*007 15

我得到了答案.由于绝对路径在每次启动时都在变化,我们可以将数据保存在相对路径上,并在附加绝对路径和相对路径时检索它.

这是我们如何在相对路径上保存数据:

NSString *documentsDirectory = @"MyFolder";
documentsDirectory = [documentsDirectory stringByAppendingPathComponent:filename];
NSString *relativePath = documentsDirectory;
Run Code Online (Sandbox Code Playgroud)

但是当你读取文件时,你必须使用绝对路径+相对路径:

  NSFileManager *fileManager = [NSFileManager defaultManager];
  NSString *fullCachePath = ((NSURL*)[[fileManager URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject] ).path;
  NSString *fullPath = [fullCachePath stringByAppendingPathComponent:relativePath];  
Run Code Online (Sandbox Code Playgroud)

对于数据库,还仅在相对路径上存储数据.但是读取时会采用绝对路径并附加来自数据库和读取的相对路径.
它在这里工作.


que*_*ish 8

应用程序容器或沙箱更改的路径应该是预期的条件.您不应将绝对文件系统路径存储到沙箱目录; 而是存储对于该目录的路径,并将其附加到NSSearchPathForDirectoriesInDomains每次的结果.