私が書いているiPadアプリには本当に奇妙な問題があります。スタートアップ時に、アプリケーションバンドルからドキュメントディレクトリにいくつかの他のフォルダ(空のファイル)を含むフォルダをコピーしたいと思います。 'flds'(すべて小文字)と呼ばれるコピーするフォルダは、「追加されたフォルダのフォルダ参照を作成する」を使用してXcode 4プロジェクトに追加され、コンパイル後に実際に.appファイルの一部であることを確認しました。 (そして、それはまだ存在していないことをコピーしようとしたとき。)NSBundleフォルダがデバイスに見つかりませんでしたが、シミュレータで動作します
が、私はこれらの呼び出しの1(彼らはすべての作業)のいずれかを使用して「FLDS」フォルダに取得しようとしました。そして、
[[[NSBundle mainBundle] bundleURL] URLByAppendingPathComponent:@"flds"]
[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"flds"]
[[NSBundle mainBundle] pathForResource:@"flds" ofType:@""]
NSFileManagerのcopyItemAtPath:toPath:error:
メソッド(またはパス文字列の代わりにURLを使用する場合は同等のURL)を使用してコピーします。
これらのすべての戦略は、iPad SimulatorとiPadデバイスで完全に機能します。次の例外があります。Ad Hocディストリビューションのためにビルドしたら、.appと.mobileprovisionをiTunesにドラッグして同期してからデバイス上でアプリケーションを実行すると、システムはもはや 'flds'フォルダが存在するとは考えていません!私は何時間もこのことを調べようとしていましたが、運がありません。繰り返しますが、シミュレータとXcodeから実行されるデバイスの両方で動作することは確かですが、iTunes経由では同期されません。
アイデア?
私は次の呼び出しは、iTunes経由でiPadアプリを同期した後に成功し、フォルダのパスを取得することを発見:
[[NSBundle mainBundle] pathForResource:@"flds" ofType:nil inDirectory:nil]
しかし、私はドキュメントディレクトリ内の新しい場所にフォルダをコピーするには、このパスを使用する場合、フォルダ自体とその中の.txtファイル(テストとしてそこに置かれている、本当にそこにあるはずがない)がコピーされ、6-7の空のサブフォルダはコピーされません。シミュレータとXcode( 'test.txt'の 'flds'フォルダ、空のサブフォルダは正常にコピーされます)から実行されるデバイスの両方で期待どおりに動作しますが、iTunes経由で同期された場合は動作しません( 'flds' 'test.txt'はサブフォルダではなくコピーされます)。これは実際にcopyItemAtPath:toPath:error:
の意図された動作ですか?そして、iTunesを使って同期した後、その動作が違うのはなぜですか?
これを試したことがあるのか分かりませんが、アプリケーションを右クリックして[パッケージを表示]を選択すると、フォルダーが最終バージョン(iTunesにドラッグする.app)に存在するかどうかを確認しました内容ですか?ファインダーでそこにアクセスしようとしているファイルとフォルダを見つけることができるはずです。 – Mark
私はそれを試みました。フォルダは間違いなくそこにあります。私はまた、 'flds'のサブフォルダの1つに.txtファイルを入れて、pathForResource:ofType:経由でアクセスしようとしましたが、実際には動作します。フォルダ自体を取得することはできません。 – hsdev
デバイス自体にないファイルを使用しているかどうか確認してください。たぶんあなたのコンピュータに保存されているファイルを使用しようとしました。わからない場合は、別のコンピュータからプロジェクトを開いて、動作しているかどうかを確認してください。 – Sagiftw