问题描述
我正在尝试从 xcassets 更新图像的内容(通过代码,因为我应该下载新图像) 我需要这个,所以我可以尝试动态更新初始屏幕图像和主页图像(两者都从 xcassets 中的同一个文件中引用)。 这是因为启动画面只能引用本地呈现的图像。
我尝试了以下方法,但不起作用。任何帮助表示赞赏。
var urlString = Bundle.main.resourcePath
let documentsURL = FileManager.default.urls(for: .documentDirectory,in: .userDomainMask).first!
let filename = URL(fileURLWithPath: urlString!)
let fileURL = filename.appendingPathComponent("image_splashscreen@3x.png")
if let pngImageData = image.pngData() {
try! pngImageData.write(to: fileURL,options: .atomic)
还有:
var documentsUrlw: URL {
return FileManager.default.urls(for: .documentDirectory,in: .userDomainMask).first!
}
let fileName = "image_splashscreen@3x"
let fileURL = documentsUrl.appendingPathComponent(fileName)
if let imageData = image.jpegData(compressionQuality: 1.0) {
try? imageData.write(to: fileURL,options: .atomic)
return fileName // ----> Save fileName
}
在这两种情况下,图像都不会更新。
解决方法
看到这个问题后,我搜索了一些类似的问题。例如这个:question
它说在 Bundle(.xcassets
resources) 中不能写入任何文件。因此,即使您有文档,也不能将文件写入 URL
。因此,您在保存/写入数据时有两个选项:Caches
/ Documents
。