【问题标题】:pathForResource returns nilpathForResource 返回 nil
【发布时间】:2018-01-27 06:55:24
【问题描述】:

我有两个文件,均名为 GoogleService-Info.plist。一个在文件夹资源 -> 暂存中,另一个在文件夹资源 -> 生产中。他们都被添加到Copy Bundle Resources。我访问其中之一的代码是这样的:

if let path = Bundle.main.path(forResource: "GoogleService-Info", ofType: "plist", inDirectory: "Resources/Staging") {
    print("this should work but doesn't")
}

它总是返回 nil。为什么找不到文件?

【问题讨论】:

  • 我建议为模拟器构建,然后查看生成的包。这将向您显示您的实际文件夹结构。我的猜测是您的文件夹结构与您认为的不同。
  • @DuncanC 是的,它似乎没有添加到文件夹中,似乎仍然在根目录之外的原始位置......我如何确保它已添加到文件夹中?
  • 将文件添加到项目时,有“创建文件夹引用”或“创建组”选项。如果你想在你的包中维护一个文件夹层次结构,首先在你的项目文件夹中创建你需要的文件夹 (project_folder/Pesources/Production/your_file) 然后将文件拖到项目中并选择“创建文件夹引用”。
  • 更正,拖动你想在你的包中的文件夹,而不是目标文件。然后选择“创建文件夹引用”

标签: ios swift


【解决方案1】:

这些资源将放在您的应用程序包的根目录中。只有在您的项目中创建文件夹引用时才能在应用程序包中获取文件夹。这些将是蓝色文件夹,而不是黄色。

将您的代码更改为(删除inDirectory 部分):

if let path = Bundle.main.path(forResource: "GoogleService-Info", ofType: "plist") {
    print("this should work but doesn't")
}

【讨论】:

  • 可行,但我需要将它们放在两个单独的文件夹中,因为有两个文件需要具有相同的名称
  • 然后在你的项目中创建两个不同的文件夹引用。确保项目中的文件夹是蓝色的。
猜你喜欢
  • 2015-09-23
  • 2012-02-27
  • 1970-01-01
  • 1970-01-01
  • 2023-03-03
  • 2015-02-25
  • 2012-03-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多