无法复制,因为您无权访问 ios 中的应用程序包
Posted
技术标签:
【中文标题】无法复制,因为您无权访问 ios 中的应用程序包【英文标题】:couldn’t be copied because you don’t have permission to access application bundle in ios 【发布时间】:2017-02-10 05:57:32 【问题描述】:当我将文件从文档目录复制到应用程序包目录时,它会给出如下错误:
无法复制“图片”,因为您没有访问“资源”的权限。
我的代码
let fileManager = FileManager.default
let documentDirectoryPath = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first?.appendingPathComponent("Images")
let bundleDirectoryPath = (Bundle.main.resourceURL?.appendingPathComponent("GCDWebUploader.bundle").appendingPathComponent("Contents").appendingPathComponent("Resources").appendingPathComponent("Images"))
do
try fileManager.copyItem(at: documentDirectoryPath!, to: bundleDirectoryPath!)
catch let error as NSError
print("Couldn't copy file to final location! Error:\(error.description)")
【问题讨论】:
为什么要将图像移动到捆绑目录? 我已经使用 GCDWebUploader 实现了简单的网络服务器。它成功完成了。但是现在我想显示从 iphone 上传到网络的图像。当时我遇到了资源未找到的问题。所以对于我得到了复制资源的解决方案。但是这样做我得到了许可问题。 这是否意味着您的文档目录中有一张图片要上传到外部服务器(使用 GCDWebUploader)?如果是这样,你为什么不显示你的上传代码,你是如何从沙箱访问图像的? 你知道 GCDWebServer 吗?看这个***.com/questions/29345909/what-is-gcdwebserver-for 是的,我已经在 GCDWebUploader Github 问题中提出了问题。谢谢。 【参考方案1】:为什么要复制到 Bundle Dirctory.. 无法在 bundle 目录中写入,因为 bundle dir 是用 SSL certificate
签名的代码,你不能破坏它。您可以使用文档目录本身来存储文件。
【讨论】:
【参考方案2】:磁盘上的捆绑目录(读取here)是不可变的代码,即开发人员无法更改其内容。应用程序的文档目录(沙箱)是您要保存内容的地方。
【讨论】:
【参考方案3】:如果您想将任何文件添加到捆绑目录中,则必须在构建时使用构建阶段选项卡中的复制资源来完成。这些通常是不应在每次执行时更改的文件。
如果您尝试添加到捆绑包中的图像用于 UI。使用资产目录
对于任何其他类型的文件(读取或写入),请使用文档目录
【讨论】:
以上是关于无法复制,因为您无权访问 ios 中的应用程序包的主要内容,如果未能解决你的问题,请参考以下文章
Xcode 9.4 无法打开文件“my_app”,因为您无权查看它
“无法安装应用程序。测试人员无权访问此应用程序。” TestFlight iOS 应用程序中的错误