NSBundleクラス
INDEX>Foundation>NSBundle
バンドルクラス
学生・教職員個人版 Adobe Creative Cloud コンプリート 12か月版 Windows/Mac対応 [オンラインコード]
- 出版社/メーカー: アドビシステムズ
- 発売日: 2013/10/01
- メディア: Software Download
- この商品を含むブログを見る
継承 | NSObject |
準拠 | NSObject (NSObject) |
フレームワーク | /System/Library/Frameworks/Foundation.framework |
使用可能 | Mac OS X 10.0以降 |
iOS2.0以降 | |
定義 | NSBundle.h |
解説
NSBundleオブジェクトはファイルシステムでプログラムが使うことの出来るコードやリソースのグループの場所を表します。
アプリケーションが使用する事のできるコードとリソースがあるファイルの場所を示します。
似たようなものでパッケージがありますが、パッケージは一つのファイルになっています。バンドル内は通常見えないようになっていて一つのファイルに見えますが、バンドル内はファイルやフォルダが存在している状態です。
アプリケーションバンドル、フレームワーク、プラグインなどバンドルにはいくつかの種類がありますが、ここでは主にアプリケーションバンドルについての説明をします。
バンドルの初期化
指定したURLからバンドルを作成するには(+ bundleWithURL)メソッドを使います。パスで指定するメソッド(+ bundleWithPath)もありますがURLで指定する方法が推奨されています。
作成したバンドルを初期化するメソッド(– initWithURL)(– initWithPath)も用意されています。
NSBundle *bundleToLoad = [NSBundle bundleWithURL:[bundleURL URLByAppendingPathComponent:@"Settings.bundle"]];
バンドルの取得
指定したクラスが、どのバンドルに含まれるかを知るには(+ bundleForClass)メソッドを使います。指定したバンドルIDでバンドルを探すには(+ bundleWithIdentifier)メソッドを使います。バンドルIDはInfo.plistにキー"CFBundleIdentifier"で設定してある文字列(たとえば"com.oomori.NSBundle")です。
NSBundle *bundle = [NSBundle bundleWithIdentifier:@"com.oomori.NSBundle" ];
アプリケーションが動いているバンドルを取得するには(+ mainBundle)メソッドを使います。アプリケーションのフレームワーク以外のバンドルを取得するには(+ allBundles)メソッドを使います。逆にアプリケーションが使っているフレームワークのバンドルを取得するには(+ allFrameworks)メソッドを使います。
バンドルクラスの取得
クラスの名前からクラスを取得するには(– classNamed)メソッドを使います。
リソースを探す
バンドルの指定したリソースの場所を取得するには(– URLForResource:withExtension:subdirectory)メソッドを使います。URLForResource:にはファイル名、withExtension:には拡張子、subdirectory:にはファイルが属するディレクトリを渡します。subdirectory:指定が無いメソッド(– URLForResource:withExtension)もあります。(– URLForResource:withExtension:subdirectory:localization:)はローカライズ指定をすることができます。
NSBundle *bundle = [NSBundle mainBundle]; NSString *retStr = [bundle localizedStringForKey:@"cancel" value:@"Don't find" table:nil];
指定の拡張子を持つリソースのURLを取得するメソッド(– URLsForResourcesWithExtension:subdirectory)や、ローカライズ指定をすることが出来る(– URLsForResourcesWithExtension:subdirectory:localization:)があります。上記をURLではなく、パスで返すメソッドもあります。
バンドルディレクトリの取得
バンドルの場所を取得するメソッドも2つあります。URLで取得するメソッド(– bundleURL)とパスで取得するメソッド(– bundlePath)です。
NSURL *bundleURL = [[NSBundle mainBundle] bundleURL];
バンドル情報の取得
バンドルIDを取得するには(– bundleIdentifier)メソッドを使います。バンドルの情報を取得するには(– infoDictionary)メソッドを使います、バンドルのInfo.plistに書かれてある情報のうち現在の環境に適合しているものが取得できます。
NSBundle *bundle = [NSBundle mainBundle]; NSDictionary *infoDic = [bundle infoDictionary];
Info.plistに記載されている情報から指定したキーの値を取得するには(– objectForInfoDictionaryKey:)メソッドを使います。値に応じて配列、文字列、数値などで返されます。
組み込みプラグインの場所を返すメソッドも(– builtInPlugInsURL)(– builtInPlugInsPath)と2つ用意されています。実行ファイルの場所は(– executableURL)(– executablePath)メソッドで取得できます。
実行ファイル名を指定して含まれるフォルダの場所を返すメソッド(– URLForAuxiliaryExecutable)(– pathForAuxiliaryExecutable)も2つあります。
NSBundle *bundle = [NSBundle mainBundle]; id obj = [bundle URLForAuxiliaryExecutable:@"NSBundle"];
プライベートフレームワークの場所を返すメソッド(– privateFrameworksURL)(– privateFrameworksPath)、共有フレームワークの場所を返すメソッド(– sharedFrameworksURL)(– sharedFrameworksPath)、共有サポートフォルダの場所を返すメソッド(– sharedSupportURL)(– sharedSupportPath)などがあります。
画像や音声などリソースファイルの場所は(– resourceURL)(– resourcePath)メソッドを使います。
NSBundle *bundle = [NSBundle mainBundle];
id obj = [bundle resourceURL];
ローカライズリソースの管理
(– localizedStringForKey:value:table)メソッドはバンドルから現在のローカライズ文字を指定のキーで探して返します。キーがなければvalue:に渡した文字列が使用されます。table:で指定しなければLocalizable.stringsが使用されます。
バンドルのコードのロード
バンドルを読み込むには(– load)メソッドや([loadAndReturnError:title=– loadAndReturnError:])メソッドを使います。現在読み込まれているかどうかを知るには(– isLoaded)メソッドを使います。バンドルをメモリから破棄するには(– unload)メソッドを使います。
実行可能なアーキテクチャを知るには(– executableArchitectures)メソッドを使い、バンドルが実行可能かを検証するには(– preflightAndReturnError)メソッドを使います。
ローカライズの管理
バンドルに含まれるローカライズ環境を取得するには(– localizations)メソッドを使います。使う事のできる環境が配列で返されます。
優先されるローカライズ環境を知るには(+ preferredLocalizationsFromArray)メソッドや(+ preferredLocalizationsFromArray:forPreferences)メソッドを使用します。
NSArray *array = [NSBundle preferredLocalizationsFromArray:[[NSBundle mainBundle] localizations]];
概要
適合するプロトコル
メソッド
NSBundleの初期化
+ preferredLocalizationsFromArray:forPreferences: 10.2
+ URLForResource:withExtension:subdirectory:inBundleWithURL 10.6
+ URLsForResourcesWithExtension:subdirectory:inBundleWithURL 10.6
- pathForResource:ofType:inDirectory:forLocalization 10.0
- pathsForResourcesOfType:inDirectory:forLocalization 10.0
- URLForResource:withExtension:subdirectory:localization 10.6
定数 | |||
Mach-O Architecture | |||
NSLoadedClasses |
通知
NSBundleDidLoadNotification 10.0