0

現在の日付を plist に保存してから、後で使用する (および更新する) ために plist を電話にコミットしようとしています。

以下のコードは、日付を保存しようとするために使用しているものですが、「一度」(ファイルが初めて作成された後) だけ入力し、その後毎回スキップする必要があるため、機能していないようです..作成されて利用できるように....

ただし、これは機能していません。理由はわかりません。これが私が書いたコードです。

NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *plistFilePath = [documentsDirectory stringByAppendingPathComponent:@"DB-Date.plist"];

    if(![[NSFileManager defaultManager] fileExistsAtPath:plistFilePath])
    {//dosnt exits

        NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"DB-Date" ofType:@"plist"];
        NSMutableArray *data = [NSMutableArray arrayWithContentsOfFile:plistPath];
        NSArray *arrValue = [data objectAtIndex:0];

        NSDate *dateValue = [arrValue objectAtIndex:0];
        dateValue = [NSDate date]; //change your value here

        [[data objectAtIndex:0] replaceObjectAtIndex:0 withObject:dateValue]; //value replaced
        [data writeToFile:plistFilePath atomically:YES];

    }

// ここから、新しく作成した plist ファイルを引き続き使用します

どんな助けでも大歓迎です。

4

2 に答える 2

1

したがって、mainBundle と NSDocumentaryDirectory は 2 つの異なる場所です...これで問題を解決するのに十分なはずです ;)

余分なコードがたくさんあるようです...代わりに括弧内でこれを行いましょう:

if(![[NSFileManager defaultManager] fileExistsAtPath:plistFilePath])
    {

     NSMutableArray *data = [[NSMutableArray alloc]init];

     NSDate *dateValue  = [NSDate date]; 

    [data addObject:dateValue];

    [data writeToFile:plistFilePath atomically:YES];

   }

答えが気に入ったら、正しいとマークしてください。ありがとう!

于 2012-09-19T21:59:19.873 に答える
0

あなたは正しい方法でやっていますが、何がうまくいかないのですか?例を教えてください。ところで、日付しかない場合は、plist ファイルを作成するよりもNSUserDefaultsを使用しないのはなぜですか?

于 2012-09-19T21:33:25.623 に答える