NSBundleクラス

2013. 09. 09
・継承
NSObject

・準拠
NSObject (NSObject)

・フレームワーク
/System/Library/Frameworks/Foundation.framework

・利用可能
iOS 2.0以降で利用可能

・宣言
NSBundle.h

・手引書
Bundle Programming Guide
Resource Programming Guide



●概要

NSBundleオブジェクトは、グループのコードとプログラムで使用できるリソースの、ファイルシステム内での場所を表します。
NSBundleオブジェクトはプログラムリソースの場所を特定し、実行可能なコードを動的に読み込みと非読み込みを行い、ローカライズの支援を行います。
バンドルはアプリケーションやフレームワーク、プラグインといった、Xcodeで使用するプロジェクトのタイプのいずれかで構築します。

バンドルの構造は、ターゲットとするプラットフォームや構築するバンドルのタイプに依って異なりますが、NSBundleクラスはほとんどの場合(全てではない)基本的な構造は非表示にしています。
バンドルからのリソースの読み込みに使用するメソッドの多くは、自動的に適切な開始ディレクトリを見つけて、既知の場所にあるリソースを検索します。
(Mac OS XとiOS用の)アプリケーションバンドルの構造についての詳細は、『Bundle Programming Guide』を参照してください。
フレームワークバンドルの構造についての詳細は、『Framework Programming Guide』を参照してください。
Mac OS Xプラグインの構造についての詳細は、『Code Loading Programming Topics』を参照してください。

Macアプリケーションでのnibファイルや画像の読み込みについての追加情報は『NSBundle Additions Reference』を参照してください。
iOSアプリケーションでのnibファイルの読み込みについての詳細は、『NSBundle UIKit Additions Reference』を参照してください。

(NSStringとCFStringのように)Core Foundationの名前が対応する他のいくつかのFoundationクラスと異なり、NSBundleオブジェクトは(toll-free bridgedによる)CFBundleの参照をキャストすることはできません。
CFBundleで提供する機能が必要な場合は、CFBundle Reference APIを使用してCFBundleを作成することができます。
データ型の変換についての詳細は『toll-free bridging』を参照してください。



●タスク

●NSBundleの初期化

+ bundleWithURL:
+ bundleWithPath:
– initWithURL:
– initWithPath:

●NSBundleの取得

+ bundleForClass:
+ bundleWithIdentifier:
+ mainBundle
+ allBundles
+ allFrameworks

●バンドルされたクラスの取得

– classNamed:
– principalClass

●リソースの検索

– URLForResource:withExtension:subdirectory:
+ pathForResource:ofType:inDirectory:
– URLForResource:withExtension:
– pathForResource:ofType:
– URLsForResourcesWithExtension:subdirectory:
– pathForResource:ofType:inDirectory:
– URLForResource:withExtension:subdirectory:localization:
– pathForResource:ofType:inDirectory:forLocalization:
+ pathsForResourcesOfType:inDirectory:
– pathsForResourcesOfType:inDirectory:
– URLsForResourcesWithExtension:subdirectory:localization:
– pathsForResourcesOfType:inDirectory:forLocalization:
+ URLForResource:withExtension:subdirectory:inBundleWithURL:
+ URLsForResourcesWithExtension:subdirectory:inBundleWithURL:
– resourcePath

●バンドルディレクトリの取得

– bundleURL
– bundlePath

●バンドル情報の取得

– bundleIdentifier
– infoDictionary
– objectForInfoDictionaryKey:
– builtInPlugInsURL
– builtInPlugInsPath
– executableURL
– executablePath
– URLForAuxiliaryExecutable:
– pathForAuxiliaryExecutable:
– privateFrameworksURL
– privateFrameworksPath
– sharedFrameworksURL
– sharedFrameworksPath
– sharedSupportURL
– sharedSupportPath
– resourceURL

●ローカライズリソースの管理

– localizedStringForKey:value:table:

●バンドルのコードの読み込み

– executableArchitectures
– preflightAndReturnError:
– load
– loadAndReturnError:
– isLoaded
– unload

●ローカリゼーションの管理

+ preferredLocalizationsFromArray:
+ preferredLocalizationsFromArray:forPreferences:
– localizations
– developmentLocalization
– preferredLocalizations
– localizedInfoDictionary



●クラスメソッド

mainBundle

現在実行されているアプリケーションの場所のディレクトリに対応するNSBundleオブジェクトを返します。

+ (NSBundle *)mainBundle

戻り値
実行可能なアプリケーションがあるディレクトリに対応するNSBundleオブジェクト、またはバンドルオブジェクトが作成できなかった場合はnilになります。

解説
このメソッドは既存のバンドルオブジェクトが存在しない場合、生成して初期化を行います。
新しいオブジェクトは実行可能なアプリケーションがある場所のディレクトリに対応します。
有効なバンドルを持っていることを確実にするために、必ず戻り値を確認してください。
このメソッドはバンドルされていないアプリケーションでも、有効なバンドルオブジェクトを返す場合があります。

一般的に、メインバンドルはアプリケーションファイルパッケージまたはアプリケーションラッパーに対応しており、アプリケーション名と『.app』拡張子によって表されたディレクトリで提供されています。

利用可能
iOS 2.0以降で利用可能。

宣言
NSBundle.h



●インスタンスメソッド

bundleIdentifier

レシーバのバンドル識別子を返します。

- (NSString *)bundleIdentifier

戻り値
バンドルの情報プロパティリストでCFBundleIdentifierキーによって定義されている、レシーバのバンドル識別子です。

利用可能
iOS 2.0以降で利用可能。

宣言
NSBundle.h


localizedStringForKey:value:table:


指定されたテーブル内に存在する、指定されたキーによって指定された文字列のローカライズバージョンを返します。

- (NSString *)localizedStringForKey:(NSString *)key value:(NSString *)value table:(NSString *)tableName

パラメータ
key
tableNameによって識別されたテーブル内の文字列のキーを指定します。
value
keyがnil、またはkeyのローカライズされた文字列がテーブル内で見つけられなかった場合に返す値を指定します。
tableName
検索するレシーバの文字列テーブルを指定します。
tableNameがnilまたは空文字列の場合、メソッドはLocalizable.strings内のテーブルの使用を試みます。

戻り値
テーブルtableName内のkeyによって指定された文字列のローカライズバージョンです。
valueがnilまたは空文字列で、ローカライズされた文字列がテーブル内に見つからない場合はkeyを返します。
keyvalueが両方ともnilの場合、空文字列を返します。

解説
文字列のローカライズと.stringファイルの仕様についての詳細は『String Resources』を参照してください。

ユーザのデフォルトのNSShowNonLocalizedStringsを使用して、メソッドがローカライズされた文字列を見つけられない場合にメッセージをログに残すように、localizedStringForKey:value:table:の動作を変更することができます。
この(グローバルドメイン内、またはアプリケーションのドメイン内の)デフォルトをYESに設定した場合、メソッドがテーブル内にローカライズされた文字列を見つけられなかった時は、コンソールにメッセージをログに残して返す前にkeyを大文字にします。

以下の例は、ボタンがクリックされた時にキーの静的配列を循環させ、Buttons.stringsという名前の文字列テーブルから各キーの値を取得して、返された値でボタンのタイトルを設定します。

- (void)changeTitle:(id)sender
{
    static int keyIndex = 0;
    NSBundle *thisBundle = [NSBundle bundleForClass:[self class]];

    NSString *locString = [thisBundle localizedStringForKey:assortedKeys[keyIndex++]
        value:@"No translation" table:@"Buttons"];
    [sender setTitle:locString];
    if (keyIndex == MAXSTRINGS) keyIndex=0;
}

利用可能
iOS 2.0以降で利用可能。

宣言
NSBundle.h


pathForResource:ofType:

指定した名前と拡張子から、識別されたリソースのフルパス名を返します。

- (NSString *)pathForResource:(NSString *)name ofType:(NSString *)extension

パラメータ
name
リソースファイル名を指定します。
nameが空文字列またはnilの場合、提供された型で最初に検出されたファイルを返します。
extension
extensionが空文字列またはnilの場合、拡張子が存在しないと仮定し、nameと正確に一致する最初に検出されたファイルとなります。

戻り値
リソースファイルのフルパス、またはファイルが見つからなかった場合はnilです。

解説
このメソッドは指定されたバンドルの非ローカライズリソースディレクトリ内で一致するリソースファイルを最初に検索します。
(OS Xではこのディレクトリは通常Resourcesと呼ばれますが、iOSの場合はメインバンドルディレクトリです。)
一致するリソースファイルが見つからない場合、任意の利用可能な言語固有の『.lproj』ディレクトリのトップレベル内を検索します。
(言語固有ディレクトリの検索順序はユーザの設定に対応します。)
これらの場所にある他のサブディレクトリを再帰することはありません。
詳細については『Internationalization Programming Topics』を参照してください。

以下のコードの断片はバンドル内のplistへのパスを取得し、NSDictionaryに読み込みます。

NSBundle *thisBundle = [NSBundle bundleForClass:[self class]];
if (commonDictionaryPath = [thisBundle pathForResource:@"CommonDictionary" ofType:@"plist"]) {
    theDictionary = [[NSDictionary alloc] initWithContentsOfFile:commonDictionaryPath];
}

利用可能
iOS 2.0以降で利用可能。

宣言
NSBundle.h


URLForResource:withExtension:

指定した名前とファイル拡張子によって識別されたリソースのファイルURLを返します。

- (NSURL *)URLForResource:(NSString *)name withExtension:(NSString *)extension

パラメータ
name
リソースファイルの名前を指定します。
extension
extensionが空文字列またはnilの場合、拡張子が存在しないと仮定し、nameと正確に一致する最初に検出されたファイルとなります。

戻り値
リソースファイルのファイルURL、またはファイルが見つからなかった場合はnilです。

解説
extensionが空文字列またはnilの場合、ファイル名と正確に一致する最初に検出されたパス名を返します。

このメソッドは指定されたバンドルの非ローカライズリソースディレクトリ内で一致するリソースファイルを最初に検索します。
(OS Xではこのディレクトリは通常Resourcesと呼ばれますが、iOSの場合はメインバンドルディレクトリです。)
一致するリソースファイルが見つからない場合、任意の利用可能な言語固有の『.lproj』ディレクトリのトップレベル内を検索します。
(言語固有ディレクトリの検索順序はユーザの設定に対応します。)
これらの場所にある他のサブディレクトリを再帰することはありません。
詳細については『Internationalization Programming Topics』を参照してください。

利用可能
iOS 4.0以降で利用可能。

宣言
NSBundle.h



●定数



●通知



参考文献

NSBundle Class Reference






Bose SoundSport wireless headphones
0 Comments
Leave a comment
管理者にだけ表示を許可する
Top
0 Trackbacks
Top
Calendar
02 | 2017/03 | 03
Sun Mon Tue Wed Thu Fri Sat
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 -
Recent Articles
iTunes


Swift
Categories
Tips
WACOM


Reference
NSApplicationDelegateプロトコル
NSArrayクラス
NSAutoreleasePoolクラス
NSBundleクラス
NSBundle UIKit追加分
NSCalendarクラス
NSCoderクラス
NSCodingプロトコル
NSCopyingプロトコル
NSDataクラス
NSDateクラス
NSDateFormatterクラス
NSDictionaryクラス
NSEntityDescriptionクラス
NSEnumeratorクラス
NSErrorクラス
NSExceptionクラス
NSFetchRequestクラス
NSFileHandleクラス
NSFileManagerクラス
NSIndexPathクラス
NSIndexPath UIKit追加分
NSKeyedArchiverクラス
NSKeyedUnarchiverクラス
NSKeyValueCodingプロトコル
NSLocaleクラス
NSManagedObjectクラス
NSManagedObjectContextクラス
NSManagedObjectModelクラス
NSMutableArrayクラス
NSMutableCopyingプロトコル
NSMutableDictionaryクラス
NSMutableSetクラス
NSNotificationクラス
NSNotificationCenterクラス
NSNullクラス
NSNumberクラス
NSObjectクラス
NSObject UIKit追加分
NSObjectプロトコル
NSPersistentStoreクラス
NSPersistentStoreCoordinatorクラス
NSPredicateクラス
NSPropertyListSerializationクラス
NSRunLoopクラス
NSSetクラス
NSStringクラス
NSString UIKit追加分
NSTimerクラス
NSTimeZoneクラス
NSURLクラス
NSURLProtectionSpaceクラス
NSURLRequestクラス
NSUserDefaultsクラス
NSValueクラス

UIActionSheetクラス
UIActionSheetDelegateプロトコル
UIActivityIndicatorViewクラス
UIAlertViewクラス
UIAlertViewDelegateプロトコル
UIApplicationクラス
UIApplicationDelegateプロトコル
UIBarButtonItemクラス
UIBarItemクラス
UIButtonクラス
UIColorクラス
UIControlクラス
UIDatePickerクラス
UIDeviceクラス
UIEventクラス
UIFontクラス
UIGestureRecognizerクラス
UIImageクラス
UIImageViewクラス
UIKit Function
UILabelクラス
UINavigationControllerクラス
UINavigationItemクラス
UIPickerViewクラス
UIPickerViewDataSourceプロトコル
UIPickerViewDelegateプロトコル
UIPinchGestureRecognizerクラス
UIResponderクラス
UIScreenクラス
UIScrollViewクラス
UISearchBarクラス
UISearchBarDelegateプロトコル
UISegmentedControlクラス
UISliderクラス
UISwipeGestureRecognizerクラス
UISwitchクラス
UITableViewクラス
UITableViewCellクラス
UITableViewControllerクラス
UITableViewDataSourceプロトコル
UITableViewDelegateプロトコル
UITapGestureRecognizerクラス
UITextFieldクラス
UITextFieldDelegateプロトコル
UITextInputTraitsプロトコル
UITextViewクラス
UITextViewDelegateプロトコル
UIToolbarクラス
UITouchクラス
UIViewクラス
UIViewControllerクラス
UIWebViewクラス
UIWebViewDelegateプロトコル
UIWindowクラス

AVAudioPlayerクラス
AVAudioPlayerDelegateプロトコル

CADisplayLinkクラス
CAEAGLLayerクラス
CALayerクラス

CGAffineTransform
CGBitmapContext
CGColor
CGColorSpace
CGContext
CGGeometry
CGImage
CGPath

EAGLContextクラス
EAGLDrawableプロトコル

Foundation Constants
Foundation Data Types
Foundation Functions

MPMediaItemクラス
MPMediaItemArtworkクラス
MPMediaPlaylistクラス
MPMediaPropertyPredicateクラス
MPMediaQueryクラス
MPMusicPlayerControllerクラス

Randomization Services

System Sound Services
BOSE

Bose SoundSport wireless headphones
ARC
Technical Q&A
情報プロパティリストキー
Start Developing iOS Apps Today
SQLite
OpenGL ES
Amazon


Monthly Archives
Recent Comments
Recent TrackBacks
RSS Link
Profile

Author:水月杏香
永遠の初心者プログラマ。

QR Code
QR
Visitors