无法打开用户库中先前应用版本创建的文件

Posted

技术标签:

【中文标题】无法打开用户库中先前应用版本创建的文件【英文标题】:Cannot open file created by previous app version in the user library 【发布时间】:2017-08-15 08:32:09 【问题描述】:

奇怪的是找不到有关此错误的太多信息。我正在更新一个非常旧的 ios 应用程序,该应用程序将用户文件存储在用户库中的一个名为“Private Documents”的子目录中。

我可以列出创建好的文件,但我无法读取它们,并收到错误“文件“1.xxx”无法打开,因为您没有查看权限。”

let urls = FileManager.default.urls(for: .libraryDirectory, in: .userDomainMask)
guard let documentDirectory = urls.first else 
    print("Cannot find old lib documents directory")
    return


guard let files = try? FileManager.default.contentsOfDirectory(at: documentDirectory.appendingPathComponent("Private Documents", isDirectory: true), includingPropertiesForKeys: nil, options: FileManager.DirectoryEnumerationOptions.skipsHiddenFiles) else 
    print("Cannot load old lib files directory")
    return

Files 现在在此目录中正确包含一组文件 URL。

但是,如果我调用 FileManager.default.isReadableFile,此函数总是返回 true,但随后尝试将文件复制到 Data(contentsOf: file) 对象中失败并出现上述错误。

帮助表示赞赏!

更新:检查了应用签名等,将当前 App Store 版本与 TestFlight 版本进行比较我遇到了同样的问题。

【问题讨论】:

尝试清理项目并清除派生数据。如果还是不行,可以尝试在构建设置中将编译器改成默认编译器。 尝试了这两种方法,通常当看到这个错误时,人们抱怨他们的实际应用程序没有通过 Xcode 运行,因为他们更改了可执行文件等:( 【参考方案1】:

好吧好吧...问题是我正在阅读的文件实际上是目录(包)。因此,所有权限、所有权、isReadable/isWritable 都是正确的。

很遗憾,Apple 的错误没有说明这是问题所在!

【讨论】:

以上是关于无法打开用户库中先前应用版本创建的文件的主要内容,如果未能解决你的问题,请参考以下文章

Access 2013 - 无法打开使用以前版本的应用程序创建的数据库

无法删除 SharePoint 库中既未签出也未打开进行编辑的文档?

linux下firefox无法打开

无法使用我的 iphone 应用程序打开文件

iBooks 打开 PDF -“无法从没有窗口的视图中呈现弹出窗口”

数据库无法打开,因为它是 655 版本