web-dev-qa-db-ja.com

メインバンドルのサブフォルダーへのパスを取得するにはどうすればよいですか?

私はObj-CからSwift 3.0に移行しているプロジェクトを持っています(そして私はSwiftでかなりの初心者です)。

この行を翻訳するにはどうすればよいですか?

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

私はなんとかリソースパスを取得しました:

let resoursePath = Bundle.main.resoursePath;

しかし、「myfolder」という名前のサブフォルダへのパスを取得するにはどうすればよいですか?その中のファイルへのパスではなく、サブフォルダーのパスを取得する必要があります。

10
Nick

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 を参照してください。

14
dasblinkenlight

このメソッドを使用して、バンドルサブディレクトリのリストを取得し、特定のタイプのリソースのみを取得できます。

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

あなたはこのようなことをすることができます:

let folderURL = resourceURL(to: "myfolder")

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