重新启动应用程序后,找不到保存的文件(在设备中)

我有一个应用程序,从图片生成.pdf文件。 如果我在拍摄照片的同一会话中阅读文件,则文件正确显示。

但是,如果我重新启动应用程序,该文件不会打开。 当应用程序重新启动时,显然应用程序的代码没有任何变化,所以位置引用保持不变。

该文件正被保存到这个位置:

/var/mobile/Containers/Data/Application/E119DC03-347B-4C84-B07B-C607D40D26B9/Documents/Test_1_Mod.pdf 

奇怪的是,如果我去Xcode的“设备”部分,我可以看到文件夹中的文件,重新启动应用程序之前和之后:

在这里输入图像说明

编辑:这是我得到的位置来保存文件:

 NSArray *arrayPaths = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask, YES); NSString *path = [arrayPaths objectAtIndex:0]; modified_pdfFileName = [path stringByAppendingPathComponent:modified_filename_pdf]; 

那么,我是否将文件保存在错误的位置?

文件是否在重启过程中移动?

对这个问题的任何build议?

谢谢

你不应该存储原始文件path的持久性(或者如果你这样做,知道根可以在你身上移动)。 一个更好的做法是只存储path的相对部分,并始终将其附加到当前的“根”path(特别是如果您可能与iCloud一样跨设备共享数据)。

尽pipe如此,通常采取快捷方式,所以这里有一些快捷方式的代码来获取文件path(假设在Documents目录中,如果您使用的是不同的位置,可以调整尝试)并更新它到当前的文档path。

 + (NSString *)rebasePathToCurrentDocumentPath:(NSString *)currentFilePath { NSString *fileComponent = [currentFilePath lastPathComponent]; NSArray *currentDocumentDir = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES); NSString *currentDocumentPath = [currentDocumentDir objectAtIndex: 0]; NSString *rebasedFilePath = [currentDocumentPath stringByAppendingPathComponent:fileComponent]; return rebasedFilePath; } 

把它附加到一个utils类,否则集成到你的stream程中..