如何获取主包中的子文件夹的路径?

时间:2016-11-19 12:13:05

标签: ios swift3 nsbundle

我有一个项目,我将从Obj-C迁移到Swift 3.0(我在Swift中非常棒)。

如何翻译此行?

NSString *folder = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"myfolder"];

我设法获得资源路径:

let resoursePath = Bundle.main.resoursePath;

但是如何获得名为" myfolder"的子文件夹的路径? 我需要获取子文件夹的路径,而不是其中文件的路径。

3 个答案:

答案 0 :(得分:12)

在Swift-3中制作URL,然后致电appendingPathComponent

let resourcePath = Bundle.main.resourcePath
let subdir = URL(fileURLWithPath:resourcePath!).appendingPathComponent("sub").path

或只是

let subdir = Bundle.main.resourceURL!.appendingPathComponent("sub").path

(谢谢,Martin R!)

有关Swift中stringByAppendingPathComponent方法的信息,请参阅this Q&A

答案 1 :(得分:1)

您可以使用此方法获取bundle子目录的列表,并仅获取特定类型的资源:

Bundle.main.paths(forResourcesOfType: type, inDirectory: folder)

答案 2 :(得分:0)

您可以执行以下操作:

let folderURL = resourceURL(to: "myfolder")

func resourceURL(to path: String) -> URL? {
    return URL(string: path, relativeTo: Bundle.main.resourceURL)
}