NSBundle
NSBundleはアプリケーションのリソース(クラス、Xib、画像などのファイル)をまとめて管理してくれる仕組みを提供するクラスです。
NSBundleを使用することにより、ファイルのパスを指定したいような時でも、バンドルが教えてくれるのでファイル管理が大変便利に行えたりします。
NSBundleのクラス階層
NSObject
↑
NSBundle
NSBundle生成
//NSBundleを取得する
NSBundle *bundle = [NSBundle mainBundle];
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]);
}