XCode 16.0 日本語化計画
ディスク上のバンドルディレクトリに保存されているコードとリソースの表現。
Apple はバンドルを使用して、アプリ、フレームワーク、プラグイン、およびその他の多くの特定の型のコンテンツを表します。バンドルは、含まれているリソースを明確に定義されたサブディレクトリに整理し、バンドル構造体は、プラットフォームとバンドルの型によって異なります。バンドルオブジェクトを使用すると、バンドルの構造を知らなくてもバンドルのリソースにアクセスできます。バンドルオブジェクトは、バンドル構造、ユーザの設定、利用可能なローカリゼーション、およびその他の関連要因を考慮して、アイテムを見つけるための単一のインターフェイスを提供します。
どの実行可能ファイルでも、バンドルオブジェクトを使用して、アプリのバンドル内または他の場所にある既知のバンドル内のリソースを見つけることができます。バンドルオブジェクトを使用して、コンテナディレクトリ内またはファイルシステムの他の部分にあるファイルを見つけることはできません。
バンドルオブジェクトを使用する一般的なパターンは以下のとおりです。
頻繁に使用されるリソースの一部の型は、バンドルなしで検索して開くことができます。たとえば、画像 (イメージ) をロードする場合は、アセットカタログにイメージを保存し、UIImage または NSImage の init(named:) メソッドを使用してロードします。同様に、文字列リソースの場合は、.strings ファイル全体を自分で読み込むのではなく、NSLocalizedString を使用して個々の文字列を読み込んで下さい。
リソースを見つける前に、まずそのリソースが含まれるバンドルを指定しなければなりません。Bundle クラスには多くの建造者がありますが、最もよく使用されるのは main です。main バンドルは、現在実行中のコードを含むバンドルディレクトリを表します。そのため、アプリの場合、main バンドルオブジェクトを使用すると、アプリに付属しているリソースにアクセスできます。
あなたのアプリがプラグイン、フレームワーク、またはその他のバンドルされたコンテンツを直接操作する場合は、このクラスの他のメソッドを使用して適切なバンドルオブジェクトを作成できます。あなたは既知の URL またはパスからバンドルオブジェクトをいつでも作成できますが、他のメソッドを使用すると、アプリが既に使用しているバンドルに簡単にアクセスできます。たとえば、フレームワークにリンクする場合は、init(for:) メソッドを使用して、そのフレームワークで定義されているクラスに基づいてフレームワークバンドルを見つけることができます。
Bundle オブジェクトを使用して、バンドル内の特定のリソースの場所を取得して下さい。リソースを検索するときは、少なくともリソースの名前とその型を指定して下さい。特定のサブディレクトリ内のリソースの場合は、そのディレクトリを指定することもできます。リソースが見つかった後、バンドルのルーチンは、ファイルを開くために使用できるパス文字列または URL を返します。
リスト 2 : バンドル内の単一のリソースの検索
Bundle オブジェクトは、ディスク上のリソースを検索するときに特定の検索パターンに従います。グローバルリソース (つまり、言語固有の .lproj ディレクトリにないリソース) が最初に返され、次に地域および言語固有のリソースが返されます。この検索パターンは、バンドルが以下の順序でリソースを検索することを意味します。
グローバルリソースは言語固有のリソースよりも優先されるため、特定のリソースのグローバルバージョンとローカライズバージョンの両方をあなたのアプリには決して含めないでください。リソースのグローバルバージョンが存在する場合、言語固有のバージョンは決して返されません。この優先順位の理由はパフォーマンスです。ローカライズされたリソースが最初に検索されると、バンドルオブジェクトはグローバルリソースを返す前に、存在しないローカライズされたリソースを検索して時間を浪費する可能性があります。
リソースファイルを検索するとき、バンドルオブジェクトは、返されるファイルを決定する際に、多くの標準ファイル名修飾子を自動的に考慮します。リソースは、特定のデバイス (~iphone、~ipad) または特定の画面解像度 (@2x、@3x) 用にタグ付けされている場合があります。必要なリソースの名前を指定するときは、これらの修飾子を含めないでください。バンドルオブジェクトは、基盤となるデバイスに最も適したファイルを選択します。詳細については、iPhone、iPad、Apple Watch のアプリ アイコン (App Icons on iPhone, iPad and Apple Watch.)を参照してください。
バンドルの構造は、ターゲットのプラットフォームと、構築するバンドルの型によって異なります。ほとんどの場合 (ただし、すべてではありません)、Bundle クラスはこの基礎構造を非表示にします。バンドルからリソースをロードするために使用するメソッドの多くは、適切な開始ディレクトリを自動的に見つけ、既知の場所にあるリソースを探します。また、このクラスのメソッドとプロパティを使用して、既知のバンドルディレクトリの場所を取得し、それらのディレクトリからリソースを取得することもできます。
iOS および macOS アプリのバンドル構造の詳細については、バンドルプログラミングガイド (Bundle Programming Guide) を参照してください。フレームワークバンドルの構造の詳細については、フレームワークプログラミングガイド (Framework Programming Guide) を参照してください。macOS プラグインの構造の詳細については、コード読み込みプログラミングトピックス (Code Loading Programming Topics) を参照してください。
現在の実行可能ファイルを含むバンドルオブジェクトを返します。
class var allFrameworks: [Bundle]
フレームワークを表すアプリケーションのすべてのバンドルの配列を返します。
class var allBundles: [Bundle]
アプリケーションのすべてのフレームワークでないバンドルの配列を返します。
指定されたクラスが関連している NSBundle オブジェクトを返します。
指定されたバンドル識別子を持つ NSBundle インスタンスを返します。
指定されたファイルの URL に対応する初期化された NSBundle オブジェクトを返します。
指定されたディレクトリに対応する初期化された NSBundle オブジェクトを返します。
func loadNibNamed(String, owner: Any?, options: [UINib.OptionsKey : Any]?) -> [Any]?
受信者のバンドルにある nib ファイルの内容をアーカイブ解除します。
指定されたファイル名と所有者を持つバンドルから nib をロードします。
func url(forResource: String?, withExtension: String?, subdirectory: String?) -> URL?
指定された名前と拡張子で識別され、与えられたバンドルディレクトリに存在するリソースファイルのファイル URL を返します。
func url(forResource: String?, withExtension: String?) -> URL?
指定された名前とファイル拡張子によって識別されるリソースのファイル URL を返します。
func urls(forResourcesWithExtension: String?, subdirectory: String?) -> [URL]?
指定されたファイル拡張子で識別され、指定されたバンドルのサブディレクトリ内にあるすべてのリソースのファイル URL の配列を返します。
指定されたバンドルのサブディレクトリにあり、グローバルリソースと指定されたローカリゼーションに関連したリソースに限定され、指定された名前とファイル拡張子で識別されるリソースのファイル URL を返します。
指定されたファイル名拡張子を持ち、指定されたリソースのサブディレクトリ内に存在し、グローバルリソースと指定されたローカリゼーションに関連したリソースに限定されたすべてのバンドルリソースのファイル URL を含む配列を返します。
指定されたバンドル内の指定された名前と拡張子を持つリソースのファイル URL を作成して返します。
class func urls(forResourcesWithExtension: String?, subdirectory: String?, in: URL) -> [URL]?
指定されたバンドル内の指定されたリソースのサブディレクトリに存在する、指定されたファイル名拡張子を持つすべてのバンドルリソースのファイル URL を含む配列を返します。
func path(forResource: String?, ofType: String?) -> String?
指定された名前とファイル拡張子によって識別されるリソースの完全なパス名を返します。
func path(forResource: String?, ofType: String?, inDirectory: String?) -> String?
指定された名前とファイル拡張子で識別され、指定されたバンドルのサブディレクトリにあるリソースの完全なパス名を返します。
指定された名前とファイル拡張子で識別され、指定されたバンドルのサブディレクトリにあり、グローバルリソースと指定されたローカリゼーションに関連したリソースに限定されたリソースの完全なパス名を返します。
func paths(forResourcesOfType: String?, inDirectory: String?) -> [String]
指定されたファイル名拡張子を持ち、リソースのサブディレクトリに存在するすべてのバンドルリソースのパス名を含む配列を返します。
指定されたファイル名拡張子を持ち、指定されたリソースのサブディレクトリ内に存在し、グローバルリソースと指定されたローカリゼーションに関連したリソースに限定されたすべてのバンドルリソースのファイルを含む配列を返します。
class func path(forResource: String?, ofType: String?, inDirectory: String) -> String?
指定された名前と拡張子で識別され、与えられたバンドルのディレクトリに存在するリソースファイルの完全なパス名を返します。
class func paths(forResourcesOfType: String?, inDirectory: String) -> [String]
指定された拡張子を持ち、指定されたパスにあるバンドルのディレクトリに存在するすべてのバンドルリソースのパス名を含む配列を返します。