【Swift】Bundleクラスの使い方!プロパティリストなどのファイルを参照する方法!

この記事からわかること
- Swift Bundleクラスの使い方
- コードからプロパティリスト(info.plist)を参照する方法
- コードからテキストファイルや画像ファイルなどを参照する方法
index
[open]
\ アプリをリリースしました /
Swiftでプロジェクト内のファイル(info.plistやその他のプロパティリスト、テキスト)などをコードから参照するためのBundle
クラスについてまとめていきます。
Bundleクラスとは?
Bundle
クラスはアプリのバンドルディレクトリにアクセスするためのクラスです。バンドルディレクトリには画像やサウンドファイル、ストーリーボードなどのリソース、テキストファイル、設定ファイルなどが含まれています。bundleとは日本語で「束ねる」といった意味になります。
Bundle
クラスを使用するにはタイププロパティとして定義されているmain
からアクセスします。
Bundle.main
Bundle IDを取得する
アプリのBundle IDを取得するにはbundleIdentifier
プロパティから取得することが可能です。
Bundle.main.bundleIdentifier // com.dev.XXXXXX
info.plistの値を参照する
「info.plist」に設定されている値はinfoDictionary
プロパティからDictionary
形式でアクセスできるのでキー値を渡すことで参照することができます。
Bundle.main.infoDictionary!["キー値"]
例えば「info.plist」に以下のような値を格納することでUser-Definedに設定した値も参照することが可能です。

if (Bundle.main.infoDictionary?["API_PATH"]) != nil {
}
画像ファイルへアクセスする
Assetsではなくプロジェクト内に直接格納した画像ファイルなどにアクセスするにはpath(forResource:,ofType:)
メソッドを使用します。引数には画像のファイル名とその拡張子を渡します。
if let imagePath = Bundle.main.path(forResource: "画像ファイル名", ofType: "拡張子") {
}
sample.pngを参照する例
if let imagePath = Bundle.main.path(forResource: "sample", ofType: "png") {
}
テキストファイルへアクセスする
先ほどのpath(forResource:,ofType:)
メソッドは画像のみではなく、他のリソースファイルへもアクセスすることが可能です。
if let readmePath = Bundle.main.path(forResource: "data", ofType: "txt") {
let text = try! String(contentsOfFile: readmePath)
print(text)
}
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。