当我将文件从文件目录复制到应用程序包目录时,会出现如下错误:
由于您无权访问“资源”,因此无法复制“图像”。
我的代码
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)")
}
答案 0 :(得分:0)
为什么要复制到Bundle Dirctory ..无法在bundle目录中写入,因为bundle目录是用SSL certificate
签名的代码,你无法破解它。您可以使用文档目录本身来存储文件。
答案 1 :(得分:0)
磁盘上的bundle目录(Read here)是代码不可变的,即开发人员无法更改其内容。应用程序的文档目录(沙箱)是您要保留的位置。
答案 2 :(得分:0)
如果要将任何文件添加到bundle目录,则必须在构建时使用构建阶段选项卡中的复制资源完成。这些通常是每次执行都不应更改的文件。
如果您要添加到捆绑包中的图像是用于UI。使用资产目录
对于任何其他类型的文件(阅读或书写),请使用文档目录