0

始める前に、ドキュメント ディレクトリに関するすべての投稿を確認したという事実を強調しておく必要があります。

だから私はあなたが私を助けるのを助けるために私の問題を分析しようとします.

5.1 を対象とした iOS アプリケーションを開発しています。XCode 4.4.1 と iOS シミュレーター バージョン 5.1 (272.21) を使用しています。

私の理解では、アプリがシミュレーターにインストールされると、そのディレクトリ構造は以下にマップされます

/Library/Application Support/iPhone Simulator/[IOS_VERSION]/Applications/[APP_UUID]

これは、アプリケーションを実行すると正しく反映されます。

さらに、次のコードを使用して一時ディレクトリを正常に作成して使用できます

NSString *tmpDir = NSTemporaryDirectory();

次のパスになります

/Library/Application Support/iPhone Simulator/[IOS_VERSION]/Applications/[APP_UUID]/tmp

あるはずのDocumentsディレクトリで作業したいときに問題が発生し始めます

/Library/Application Support/iPhone Simulator/[IOS_VERSION]/Applications/[APP_UUID]/Documents

次のコードは、そのパスの存在を確認し、NSLog を使用してログに記録します。パスが存在すると表示されていても、その場所に移動すると、見つからないファイルが返されます。

+ (NSString *) currentPath{

NSArray *searchPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentPath = [searchPaths objectAtIndex:0];

searchPaths=nil;

BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:documentPath];

if (fileExists == TRUE) {
    NSLog(@" %@ already exists",documentPath);
} else {

    NSLog(@"doesn't exists");
    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSError *error;

    if(![fileManager createDirectoryAtPath:documentPath withIntermediateDirectories:true attributes:nil error:&error])
    {
        NSLog(@"Couldn't create documents directory %@",error);

    }



}

return documentPath;

}

NSLog 行の結果は次のとおりです。

2012-08-09 23:12:09.813 AMM[22656:c07]  /Users/fotis/Library/Application Support/iPhone Simulator/5.1/Applications/7CE8645A-BDD7-4AB6-8CAB-B0EF1579CD2B/Documents already exists

ターミナルで

 > pwd
 /Users/fotis/Library/Application Support/iPhone Simulator/5.1/Applications/7CE8645A-BDD7-4AB6-8CAB-B0EF1579CD2B
 >ls -lsa
  total 0
  0 drwxr-xr-x  5 fotis  170 Aug  9 23:12 .
  0 drwxr-xr-x  3 fotis  102 Aug  9 22:50 ..
  0 drwxr-xr-x 30 fotis 1020 Aug  9 23:12 AMM.app
  0 drwxr-xr-x  4 fotis  136 Aug  9 22:50 Library
  0 drwxr-xr-x  4 fotis  136 Aug  9 22:51 tmp

ご覧のとおり、Documentsゴースト ディレクトリはありません。私の人生では、その背後にある魔法をすべて理解することはできません. 注意すべきことの 1 つは、アプリ デリゲートの「-didFinishLaunchingWithOptions」メソッドでこれを実行していることです。これは、そこで初期化を行っているためです。

何か案は?

4

2 に答える 2

0

シミュレーターはその会場では少し不格好です。以前は、アプリがシミュレーターで実行されていない間は、シミュレートされたサンドボックスを見つけることさえできませんでした。とにかく、Documentsフォルダーの作成について心配する必要はありません。それは常にデバイス上にあります(アプリ内またはFinderで削除しようとしていない場合は、シミュレーターもあります)。

于 2012-08-09T20:37:33.597 に答える
0

自分の質問に反対票を投じることができるかどうかはわかりませんが、ここにグリルがあります。

私の初期化プロセスの一部は、 Documentsディレクトリからいくつかのファイルを削除することであることがわかりました。

したがって、パスの欠落について疑問に思っている人は、スラッシュ「/」が正しく、グロブ (*)DO NOTにルート (Documents/) フォルダーが含まれていることを確認してください。

しかし、奇妙なことに、私の「悪い」コードがこの (価値があるのは、アプリケーションに依存する) ディレクトリをそのパスから削除できたという事実です。

于 2012-08-09T20:42:31.903 に答える