iPhoneアプリ開発の虎の巻
HOME > NSBundle

NSBundle

NSBundleはアプリケーションのリソース(クラス、Xib、画像などのファイル)をまとめて管理してくれる仕組みを提供するクラスです。
NSBundleを使用することにより、ファイルのパスを指定したいような時でも、バンドルが教えてくれるのでファイル管理が大変便利に行えたりします。

NSBundleのクラス階層

NSObject ↑ NSBundle

NSBundle生成

//NSBundleを取得する
NSBundle *bundle = [NSBundle mainBundle];

NSBundleのメソッド

【NSBundleの主要メソッド】
メソッド名 説明
- (NSString *)bundlePath バンドルのパスを取得する
- (NSString *)bundleIdentifier バンドルIDを取得する
- (NSString *)pathForResource:
(NSString *)name
ofType:(NSString *)ext
指定したリソースのパスを取得する
- (NSDictionary *)infoDictionary バンドルの情報を取得する

主要なメソッドのみ掲載しています。
 上記「NSBundleのクラス階層」にあるクラスのメソッドも使用できます。

NSBundle例文

// バンドルを取得する
NSBundle *bundle = [NSBundle mainBundle];

※以下、上記 bundle を元とした例文です。

// バンドルのパスを取得する
NSString *path = [bundle bundlePath];
// バンドルのIDを取得する
NSString *bid = [bundle bundleIdentifier];
  (Info.plistの「Bundle identifier」に定義してある値)
// プロジェクトに管理されているファイル「hoge.png」のパスを取得する
NSString *path = [bundle pathForResource:@"hoge" ofType:@"png"];
// バンドルの情報を取得してNSLogで出力する
NSDictionary *dic = [bundle infoDictionary];
NSArray *keys = [dic allKeys];
NSArray *vals = [dic allValues];
for(int i=0;i<[keys count];i++){
  NSLog(@"キー:%@ 値:%@", [keys objectAtIndex:i], [vals objectAtIndex:i]);
}
totop