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

この記事からわかること

  • Swift Bundleクラス使い方
  • コードからプロパティリスト(info.plist)を参照する方法
  • コードからテキストファイル画像ファイルなどを参照する方法

index

[open]

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

Swiftでプロジェクト内のファイル(info.plistやその他のプロパティリスト、テキスト)などをコードから参照するためのBundleクラスについてまとめていきます。

公式リファレンス: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に設定した値も参照することが可能です。

【Xcode】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)
}

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article

index