我已将包含index.html
的文件夹复制到项目中。
当我尝试获取文件夹中文件的路径时,我得到nil
。
let path = Bundle.main.path(forResource: "index", ofType: "html", inDirectory: "games/game1")
我也尝试使用“ / games / game1”字符串。不过不行。
但是当我将index.html
移到项目的根目录并使用
let path = Bundle.main.path(forResource: "index", ofType: "html")
我得到正确的路径。
所以我的问题是如何在子文件夹中获取index.html
的路径?
答案 0 :(得分:1)
解决方案是使用
Bundle.main.url(forResource: "index", withExtension: "html", subdirectory: "games/game1")
我不知道为什么,但是如果我们得到一个路径,然后从中构造一个URL,这是行不通的。
注意:,您必须
答案 1 :(得分:1)
请参阅Eugene的答案,这里是Swift 5的替代版本:
Bundle.main.url(forResource: "index", withExtension: "html", inDirectory: "games/game1")
答案 2 :(得分:0)
请参阅Apple文档link
总结
苹果使用捆绑软件代表应用,框架, 插件以及许多其他特定类型的内容。捆绑包 它们包含的资源到定义明确的子目录中,并捆绑在一起 结构取决于平台和捆绑包的类型。 通过使用包对象,您无需访问包的资源即可 知道捆绑的结构。捆绑对象提供了一个 单个项目,用于查找项目,并考虑了捆绑销售 结构,用户首选项,可用的本地化及其他 相关因素。捆绑结构取决于目标平台和类型 您正在构建的捆绑包。 Bundle类隐藏了此基础 大多数(但不是全部)情况下的结构。您使用的许多方法 从捆绑中加载资源会自动找到合适的位置 在目录中查找已知位置的资源。您可以 也使用此类的方法和属性来获取位置 已知捆绑目录的目录并专门检索资源 从这些目录中。
您可以在项目中的任何位置添加index.html文件,但同时要获取使用信息
let path = Bundle.main.path(forResource: "index", ofType: "html")