我有一个项目,我将从Obj-C迁移到Swift 3.0(我在Swift中非常棒)。
如何翻译此行?
NSString *folder = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"myfolder"];
我设法获得资源路径:
let resoursePath = Bundle.main.resoursePath;
但是如何获得名为" myfolder"的子文件夹的路径? 我需要获取子文件夹的路径,而不是其中文件的路径。
答案 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)
}