如何从 Bundle 中获取 PNG 文件的资源路径?
Posted
技术标签:
【中文标题】如何从 Bundle 中获取 PNG 文件的资源路径?【英文标题】:How to get resource path for PNG files from Bundle? 【发布时间】:2020-05-30 15:25:12 【问题描述】:我正在尝试获取添加到项目中的图像文件的资源路径。以下代码适用于 jpeg
文件。但它为 PNG
文件提供 nil。图片名称正确,已添加到项目中。
使用puppy.png
和car.jpeg
名称添加图像文件。
let carPathURL = Bundle.main.path(forResource: "car", ofType: "jpeg") // Gives right path
let puppyPathURL = Bundle.main.path(forResource: "puppy", ofType: "png") // Gives nil
以下是应用程序包内容的屏幕截图。
项目的屏幕截图如下所示,显示了添加的文件。
为什么它对 PNG 文件给出 nil ?如何获取PNG文件的资源路径?
【问题讨论】:
在上面的代码中,您设置了 carPathURL 但转换了 imagePathURL。代码示例有点混乱。哪一行给出 nil,第二行还是第三行代码? @Marcy,感谢您指出。我已经更正了这个问题。第二行给出 nil。 以上屏幕截图中的puppy.png
在哪里?
@Rob,是的,它不存在,但为什么呢?我不确定。
@Rob,我用更新的项目截图编辑了这个问题。图像文件已添加。
【参考方案1】:
如果扩展名是大写的(即 PNG,而不是 png),则必须明确指定
Bundle.main.path(forResource: "puppy", ofType: "PNG")
【讨论】:
好点。我只是尝试了“png”和“PNG”,结果仍然为零。 @Shubham,您确定您已将此图像添加到测试目标吗?在 Finder 中打开构建的应用程序包内容并查看图像是否存在? 是的,它被添加到目标中。它还出现在 Copy Bundle Resources 部分下。 @Shubham,我相信奇迹,但不在这里))。您会通过 Finder 中的“显示包内容”附加到应用程序包内容的问题屏幕截图吗? 是的,我调查过了。并且 png 文件不存在。以上是关于如何从 Bundle 中获取 PNG 文件的资源路径?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 SwiftUI 中的 Bundle 中的有效路径或 URL 将图像加载到 Image()?