0

plistファイルからデータを保存/取得していますが、問題があります。plistファイルが存在しない場合は作成できません。アプリを使用してDocumentフォルダーに作成する必要があります。私のコードは

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"playersnames.plist"];
NSFileManager *fileManager = [NSFileManager defaultManager];

if (![fileManager fileExistsAtPath: path])
{
    path = [documentsDirectory stringByAppendingPathComponent: [NSString stringWithFormat: @"playersnames.plist"] ];

}

NSMutableDictionary *data = [[NSMutableDictionary alloc] initWithContentsOfFile:path];


NSFileManager *fileManager2 = [NSFileManager defaultManager];
//NSMutableDictionary *data;

if ([fileManager2 fileExistsAtPath: path])
{
    data = [[NSMutableDictionary alloc] initWithContentsOfFile: path];

}
else
{
    // If the file doesn’t exist, create an empty dictionary
    data = [[NSMutableDictionary alloc] init];

}

問題を解決するために検索しましたが、チャンスがなく、コードに何が欠けているのかわかりません。

誰かが私にそれをする方法を説明することができればお願いします。

私のコードはviewDidLoadにあります。

前もって感謝します。

4

1 に答える 1

0

ファイルを作成することはありません-この最初の参照をfileExistsに変更します。

if (![fileManager fileExistsAtPath: path])
{
    path = [documentsDirectory stringByAppendingPathComponent: [NSString stringWithFormat: @"playersnames.plist"] ];

}

これに:

if (![fileManager fileExistsAtPath: path])
{
    BOOL ret = [[NSDictionary dictionary] writeToFile:path atomically:YES];
    assert(ret); // better work!
}

これでファイルが作成されました。後で、同じファイルに完全な辞書を保存して、同じことを行う必要があります。重要な注意:これらの呼び出しからの戻りコードをテストしてください!

于 2012-08-10T00:59:41.943 に答える