私はObj-CからSwift 3.0に移行しているプロジェクトを持っています(そして私はSwiftでかなりの初心者です)。
この行を翻訳するにはどうすればよいですか?
NSString *folder = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"myfolder"];
私はなんとかリソースパスを取得しました:
let resoursePath = Bundle.main.resoursePath;
しかし、「myfolder」という名前のサブフォルダへのパスを取得するにはどうすればよいですか?その中のファイルへのパスではなく、サブフォルダーのパスを取得する必要があります。
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 を参照してください。
このメソッドを使用して、バンドルサブディレクトリのリストを取得し、特定のタイプのリソースのみを取得できます。
Bundle.main.paths(forResourcesOfType: type, inDirectory: folder)
あなたはこのようなことをすることができます:
let folderURL = resourceURL(to: "myfolder")
func resourceURL(to path: String) -> URL? {
return URL(string: path, relativeTo: Bundle.main.resourceURL)
}