2012-12-10 6 views
5

自分のリソース、nibファイル、ローカライゼーションファイルを共通の再利用可能なバンドルに分けたかったのです。それで、私は自分のiosアプリケーション用のバンドルを作成し、ビルド段階、コピーバンドルリソースを使って、バンドル内に含まれる指定されたリソースを作成しました。しかし、今ではバンドルをロードしようとするとバンドルをロードできません。 [NSBundle allBundles]を使ってみると、配列にはメインのアプリケーションバンドルしか表示されません。NSBundleを使用してリソースをロード

また、NSApplicationPathのディレクトリを列挙しようとしましたが、使用可能な唯一のバンドルがアプリケーションのデフォルトバンドルです。私はこのテクニックを学び、それを使って私のリソースを分けたかったのです。どんな助けや提案も大歓迎です。ありがとうございます

答えて

6
[NSBundle bundleWithPath:[NSString stringWithFormat:@"%@/%@", [[NSBundle mainBundle] bundlePath], pathToYourBundleWithinTheDotAppDirectory]; 

私はどのように乗っているか教えてください。 、1つのバンドルとのプロジェクトでは

enter image description here

+1

バンドルをロードしません。それは、バンドル自体がメインのアプリケーションバンドルの内側にあるようです。だから私は、[[NSBundle mainBundle] pathForResource:@ "MyBundle" ofType:@ "bundle"]を使ってバンドルへのパスを取得し、bundleWithPathを使ってパスを使用してバンドルをロードしなければなりませんでした: – Sandeep

+0

しかし、 pathForResource:ofType:methodを使用してイメージをロードしようとしましたが、メソッドはnilであり、次にシミュレータアプリケーションフォルダを参照し、イメージがコピーされていないことを確認しました。 – Sandeep

+1

ビルドに「ファイルをコピー」フェーズを追加する必要があります。 – hd1

2

はこのような何かを試してみてください私は以下を使用します:

// in this example, we load test.png from the bundle 
NSString *pathToResource = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"png"]; 

便利なのは、ローカライズされたファイルを持っている場合、これは現在のユーザーロケールのファイルのパスを提供することです。これは、ローカライズされたファイルがメインディレクトリになく、独自のサブフォルダにあるので便利です(たとえば、英語のローカライズされたファイルは@ "en.lproj"サブフォルダにあります)。名前で呼び出すことは面倒です完全なパス。このメソッドはあなたのパスを取得します。

+0

既存のアプリケーションにターゲットを追加してバンドルを作成しました。 – Sandeep

1

NSBundle* bundle=[NSBundle bundleWithIdentifier: @"bundle name"]; 

そして、あなたがプロジェクトにバンドルをドラッグしているときは、これらのオプションを選択していることを確認してください。

関連する問題