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

标签 ios

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

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

文件被保存到这个位置:

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

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

enter image description here

编辑:这是我获取文件保存位置的方式:

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

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

文件是否在重启期间以某种方式移动?

对这个问题有什么建议吗?

谢谢

最佳答案

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

尽管如此,使用快捷方式还是很常见的,所以这里有一些快速而简单的代码来获取文件路径(假设在 Documents 目录中,如果您使用不同的位置,您可以调整一下)并将其更新为当前的文档路径。

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

将其附加到实用程序类或以其他方式将其集成到您的流程中..

关于ios - 重新启动应用程序后找不到保存的文件(在设备中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27848427/

相关文章:

ios - 获取当前的 CAAnimation 转换值

iphone - 当 XML 数据根据输入的数据返回两个不同的类别时,如何解析 XML 数据?

ios - 如何在 iOS 的通讯录中获取某人的家庭电话号码?

android - 光标经过表情符号

ios - 快速布洛克 "Token is required"

ios - 如何从 foursquare 获取用户的特定 friend 的签到?

ios - 前缀头导入取消了库对相同方法的实现

ios - 如何检查AdMob横幅广告是否已加载? ( swift 3)

ios - 根据plist文件快速更改标签文本背景颜色

ios - 在第一个应用程序发布之前对核心数据轻量级迁移的一个小澄清