【问题标题】:Bundle.main.path(forResource:) returns nilBundle.main.path(forResource:) 返回 nil
【发布时间】:2019-06-30 10:37:48
【问题描述】:

由于我不知道的原因,我找不到文件:

let bundlePath = Bundle.main.path(forResource: "REGION_DETAILS_41", ofType: ".zip")

这很奇怪,因为当我列出资源目录中存在的所有文件时,它就在那里。我可以找到其他文件,但不是这个。 我也尝试过不同的搜索配置,例如:

let bundlePath = Bundle.main.path(forResource: "REGION_DETAILS_41.zip", ofType: nil)
let bundlePath = Bundle.main.path(forResource: "REGION_DETAILS_41.zip", ofType: "")

但没有成功。

编辑: 以下也失败了:

Bundle.main.path(forResource: "REGION_DETAILS_41", ofType: "zip")

编辑2: 我通过检查我的资源文件夹并检查其内容来验证它是否存在:

Bundle.main.resourcePath
FileManager.default.contentsOfDirectory(atPath: myResourcesFolder)

我还检查了查找器,它确实在那里。

它包含在副本捆绑资源中:

【问题讨论】:

  • 你是如何验证文件存在于资源中的?
  • 检查你是否有这个文件到你的Copy bundle resource
  • iOS 设备上的文件系统区分大小写:"zip" != "ZIP"
  • @MartinR 欠你一杯好啤酒 :D

标签: ios swift xcode


【解决方案1】:

首先检查您在添加时是否已将此 ZIP 文件复制到捆绑包中,方法是查看 Copy Bundle Resource

以下代码经过测试,您可以通过它访问 zip 文件:

let bundlePath = Bundle.main.path(forResource: "REGION_DETAILS_41", ofType: "zip")

【讨论】:

  • 我已经检查过了,它就在那里。
  • @izik461 我尝试了这段代码,它在我这边工作。添加的时候一定有问题。请检查您在项目中添加的目标
  • 否则只需从项目中删除文件并重新添加然后检查。
【解决方案2】:

感谢https://stackoverflow.com/users/1187415/martin-r: iOS 设备上的文件系统区分大小写:"zip" != "ZIP"。 更改为 ZIP 后,它运行良好。

【讨论】:

  • 最好将文件重命名为“zip”以避免混淆。
猜你喜欢
  • 2017-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-18
  • 2019-06-20
  • 2017-12-16
相关资源
最近更新 更多