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