ライブラリが画像などのリソースを必要とする時、アプリ側と重複しない形でライブラリがリソースを保持する必要があります。これを実現するためにはbundleファイルを作成します。

  • プロジェクトフォルダ内のどこかにFinderからフォルダを作ります
  • この時、拡張子を*.bundleにします。ファイル名はライブラリ名と同じでよいでしょう
    • 例:MyLib.bundle
  • 拡張子をbundleにすると直接フォルダとして開けなくなるので、コマンドメニューからパッケージの内容を表示を選択して開きます
  • このフォルダの中に画像などリソースとなるファイルを入れます
  • Xcodeのプロジェクトツリーに、bundleファイル(実際はフォルダですが)を追加します
  • 以下のコードでbundleファイルから画像を読み出します
NSString *bundlePath = [[NSBundle mainBundle] pathForResource:@"MyLib" ofType:@"bundle"];
NSBundle *bundle = [NSBundle bundleWithPath:bundlePath];
// wines.jsonというファイルのパスを得る
NSString *winesJSONPath = [bundle pathForResource:@"wines" ofType:@"json"];
// grape.pngという画像ファイルを読み出す
UIImage *image = [UIImage imageNamed:@"grape" inBundle:bundle compatibleWithTraitCollection:nil];