无法复制,因为您无权访问ios中的应用程序包

时间:2017-02-10 05:57:33

标签: ios swift3

当我将文件从文件目录复制到应用程序包目录时,会出现如下错误:

由于您无权访问“资源”,因此无法复制“图像”。

我的代码

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)")
    }

3 个答案:

答案 0 :(得分:0)

为什么要复制到Bundle Dirctory ..无法在bundle目录中写入,因为bundle目录是用SSL certificate签名的代码,你无法破解它。您可以使用文档目录本身来存储文件。

答案 1 :(得分:0)

磁盘上的bundle目录(Read here)是代码不可变的,即开发人员无法更改其内容。应用程序的文档目录(沙箱)是您要保留的位置。

答案 2 :(得分:0)

如果要将任何文件添加到bundle目录,则必须在构建时使用构建阶段选项卡中的复制资源完成。这些通常是每次执行都不应更改的文件。

如果您要添加到捆绑包中的图像是用于UI。使用资产目录

对于任何其他类型的文件(阅读或书写),请使用文档目录