资源路径 returns 无文件路径,尽管文件位于 Documents 目录中
Path for resource returns nil file path despite file is in Documents directory
当我运行这段代码并添加断点时:
var pathFor = Bundle.main.path(forResource: imageName, ofType: "png")
print("breakpoint added here")
我看到 nil 变量的 pathFor 值。
但是,如果我根据上下文检查我的应用程序包中的文件是否存在(使用 XCode -> 设备 -> 设备名称 -> 下载容器 -> 显示包内容),我可以在 文档目录:
我做错了什么?
更新:
我已按照 answer 中的建议修改了代码。
很遗憾,我无法根据路径实例化图像。
请看这里:
您正在 Bundle(即编译时嵌入的文件)中查找您放入文档文件夹中的文件。那是行不通的。
您的文件在这里:
if let dir = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory, FileManager.SearchPathDomainMask.allDomainsMask, true).first {
if let path = NSURL(fileURLWithPath: dir).appendingPathComponent("file.html") {
print(path as Any)
if let imageData = NSData(contentsOf: path!) {
let image = UIImage(data:imageData as Data)
}
}
另一个排列,但我个人会这样做:
let fileURL = try! FileManager.default
.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false)
.appendingPathComponent(imageName)
.appendingPathExtension("png")
let image = UIImage(contentsOfFile: fileURL.path)
当我运行这段代码并添加断点时:
var pathFor = Bundle.main.path(forResource: imageName, ofType: "png")
print("breakpoint added here")
我看到 nil 变量的 pathFor 值。
但是,如果我根据上下文检查我的应用程序包中的文件是否存在(使用 XCode -> 设备 -> 设备名称 -> 下载容器 -> 显示包内容),我可以在 文档目录:
我做错了什么?
更新:
我已按照 answer 中的建议修改了代码。
很遗憾,我无法根据路径实例化图像。
请看这里:
您正在 Bundle(即编译时嵌入的文件)中查找您放入文档文件夹中的文件。那是行不通的。
您的文件在这里:
if let dir = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory, FileManager.SearchPathDomainMask.allDomainsMask, true).first {
if let path = NSURL(fileURLWithPath: dir).appendingPathComponent("file.html") {
print(path as Any)
if let imageData = NSData(contentsOf: path!) {
let image = UIImage(data:imageData as Data)
}
}
另一个排列,但我个人会这样做:
let fileURL = try! FileManager.default
.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false)
.appendingPathComponent(imageName)
.appendingPathExtension("png")
let image = UIImage(contentsOfFile: fileURL.path)