Xcode プロジェクトでフレームワークを構築しています。フレームワークを構築するために、集計ターゲットを作成しました。フレームワークは、静的ライブラリ、ヘッダー ファイル、および .png アセットのバンドルで構成されますMyFrameworkResources.bundle
。アグリゲートをビルドすると、すべてが正常に作成され、バンドルが Products ディレクトリに存在します。
また、私の Xcode プロジェクトにはターゲット アプリケーションがあります。このアプリケーションは、フレームワーク製品 (静的ライブラリ、ヘッダー ファイル、およびバンドル) をテストするためのものです。静的ライブラリを追加しMyFrameworkResources.bundle
、ターゲット アプリケーションのターゲット依存関係に追加しました。MyFrameworkResources.bundle
また、ターゲット アプリケーションのビルド フェーズでバンドル リソースをコピーするように追加しました。
静的ライブラリのすべてのファイルを問題なく使用できますが、バンドルからリソースをロードしようとするとエラーが発生します。これは、バンドルからアセットをロードする方法です。
NSString *mainBundlePath = [[NSBundle mainBundle] resourcePath];
NSString *frameworkBundlePath = [mainBundlePath stringByAppendingPathComponent:@"MyFrameworkResources.bundle"];
NSBundle *frameworkBundle = [NSBundle bundleWithPath:frameworkBundlePath];
NSLog(@"bundle: %@", frameworkBundle);
NSError *error;
[frameworkBundle loadAndReturnError:&error]; // <-- THIS RETURNS AN ERROR
NSLog(@"error: %@", error);
UIImage *image = [UIImage imageWithContentsOfFile:[frameworkBundle pathForResource:@"AnyImage" ofType:@"tiff"]]; // <-- EDIT, USE "tiff", NOT "png"
バンドルをログに記録すると、次のようになります。
バンドル: NSBundle /Users/my_comp/Library/Application Support/iPhone Simulator/6.1/Applications/blah-blah-blah/MyApp.app/MyFrameworkResources.bundle (まだロードされていません)
エラーをログに記録すると、次のようになります。
エラー: エラー ドメイン = NSCocoaErrorDomain コード = 4 「実行可能ファイルが見つからなかったため、バンドル "MyFrameworkResources" を読み込めませんでした。」UserInfo=0x7535ee0 {NSLocalizedRecoverySuggestion=バンドルを再インストールしてみてください。, NSLocalizedFailureReason=バンドルの実行可能ファイルが見つかりませんでした., NSLocalizedDescription=実行可能ファイルが見つからなかったため、バンドル「MyFrameworkResources」をロードできませんでした., NSBundlePath=/Users /my_comp/Library/Application Support/iPhone Simulator/6.1/Applications/blah-blah-blah/MyApp.app/MyFrameworkResources.bundle}
再確認するために/Users/my_comp/Library/Application Support/iPhone Simulator/6.1/Applications/blah-blah-blah/MyApp.app/
、自分のコンピューターに cd したところ、MyFrameworkResources.bundle
実際にそこにありました。だから今、私は途方に暮れています。集約ターゲットのクリーニング、ターゲット アプリケーションのクリーニング、ターゲット アプリケーションの削除を試みましたが、うまくいきませんでした。
バンドルから画像を読み込めない理由はありますか? (説明が長くなってすみません)
参考までに、フレームワークとバンドルを構築するためのガイドラインとして、この素晴らしいチュートリアルを使用してきました。