0

単純な配列を plist ファイルに書き込んでから、後で取得しようとしています。次のコードがあります。

+ (NSString*) dataFilePath
{
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES);
    NSString *documentDirectory = [paths objectAtIndex:0];
    NSString *dataFilePath = [documentDirectory stringByAppendingPathComponent:@"TipAlertViewDefaults.plist"];

    return dataFilePath;
}

+ (NSArray*) tipAlertViewDefaults
{
    NSString *dataFilePath = [self dataFilePath];
    NSLog(@"DataFilePath: %@", dataFilePath);
    NSMutableArray *tipAlertViewDefaults;

    if ([[NSFileManager defaultManager] fileExistsAtPath:dataFilePath])
    {
        NSLog(@"File Exists");
        tipAlertViewDefaults = [[NSMutableArray alloc] initWithContentsOfFile:dataFilePath];
    }
    else
    {
        NSLog(@"File Doesn't Exist");
        tipAlertViewDefaults = [[NSMutableArray alloc] initWithObjects:[NSNumber numberWithBool:NO], nil];
        [tipAlertViewDefaults writeToFile:dataFilePath atomically:YES];
    }

    return tipAlertViewDefaults;
}

このメソッドを 2 回呼び出します。1 回目は、ファイルを見つけて初めて書き込むべきではありません。2 番目の呼び出しでファイルを見つけることができるはずですが、そうではありません。ここで私が間違っているところを誰かが見ることができますか?

4

2 に答える 2

5

NSDocumentationDirectory繰り返しますが、Xcode の愚かなオートコンプリートはあなたを失いましたNSDocumentDirectory

Documentation ディレクトリは iOS には存在しないため、そこに書き込むことはできません。

于 2013-04-05T15:10:48.507 に答える
0

本当にNSDocumentationDirectoryディレクトリに書き込みますか? このディレクトリはデフォルトでは作成されないと思います(そのため、事前に作成する必要があります)。

おそらくあなたが望んでいNSDocumentDirectoryた。私はそれを試してみましたが、あなたのコードは機能します。

于 2013-04-05T15:26:12.863 に答える