0

問題は、シミュレータではなくデバイスで発生しています。

 NSError *error;
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *path = [documentsDirectory stringByAppendingPathComponent:@"Plist1.plist"]; 

    NSFileManager *fileManager = [NSFileManager defaultManager];

    NSLog(@"documentsDirectory  --- %@", documentsDirectory);
    NSLog(@"path --- %@", path);
    @try
    {
        if (![fileManager fileExistsAtPath:path])
        {
            [fileManager copyItemAtPath:documentsDirectory toPath:path error:&error];
        }
    }
    @catch (NSException *exception)
    {
        NSLog(@" [exception description] -- %@", [exception description]);
    }
    @finally {

    }

    [dictEmot writeToFile:path atomically:YES];

    // To verify
    NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:path];
    NSLog(@"[dict allKeys] My plist ----- %@", [dict allKeys]); 

上記は、ドキュメント ディレクトリに 2 つの plist ファイルを保存するために作成したコードです。2 番目の plist を保存するのと同じ方法です。

[self savePlist:plist1];
[self savePlist:plist2];

私の問題は、2 番目の plist を保存しようとするたびに、ドキュメント ディレクトリ内にフォルダーの階層が作成され、その内容で plist2 ファイルが保存されないことです。

2 番目のメソッド呼び出しが完了すると、アプリ ドキュメント ディレクトリは次のようになります。

Documents
 -> plist1
   -> plist1
      .
      .
      .
     -> plist1
       -> plist1
other files

私はメインスレッドでもやってみましたが、同じ結果です。

そのさえない印刷例外。

  • 私の間違いは何ですか?

    - 階層を作成する理由は?

4

1 に答える 1

0

iOSについてはよくわかりませんが、問題はstringByAppendingPathComponent:@"Plist1.plist"ドキュメントの確認にあると思います。「追加」という単語に疑いがあり、ファイル名の値をPlist1.plistにハードコーディングしているため、新しいファイル名を送信した場合でも...

それでも、iOSのコーディングを長い間行っていないので、よくわかりません。

于 2012-10-04T12:44:00.467 に答える