繁体   English   中英

在命令行工具中获取资源路径

[英]Getting path for resource in Command Line Tool

我正在尝试在 Xcode(8 beta 2)的命令行工具中获取资源的路径。 这是我所拥有的:

  • 资源 file.xyz 已被拖入项目,并且目标成员资格与主项目匹配。
  • 在 Build Phases -> Copy Files 下,目标设置为“Resources”,子路径为空。 “仅在安装时复制”未选中,file.xyz 列在下表中。
  • 在我的 main.swift 文件中,我有以下代码:

     guard let filePath = Bundle.pathForResource("file", ofType: "xyz", inDirectory: "Resources") else{ fatalError("Could not find file") }

每次都会触发fatalError 有任何想法吗? 我知道命令行工具没有应用程序包,这就是为什么将资源复制到 Resources 文件夹中的原因,但我的inDirectory参数有点疯狂……感谢阅读。

编辑:我的主要目标是从 CLT 访问资源文件(在这种情况下为文本文件)——我不喜欢这种特定的方式,所以如果有另一种方法也很好!

使用 Xcode 13.2 和 Swift 5,我遇到了同样的问题:我已经将一个 JSON 文件拖到我的命令行工具项目中,并且无法直接在我的代码中使用它。 由于 CLT 似乎没有 Bundle,我找到了一种解决方法。

我创建了一个结构,它只有一个包含我的 JSON 作为字符串的静态 let 属性:

struct CategoriesJSON {
    static let string = """
... my JSON is here as plain text ...
"""
}

现在我可以通过简单地调用来使用它: CategoriesJSON.string 我知道这有点难看,但现在我的 JSON 在我需要的项目中。

作为一种解决方法,您可以使用源文件的绝对路径例如,如果在 iCloud 驱动器上:

let path = "/Users/myName/Library/Mobile Documents/com~apple~CloudDocs/myDirectory/file.xyz"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM