2012-02-13 7 views
0

私は現在店舗からテキストファイルを呼び出して表示し、必要に応じて次のファイルを読み込むことができるようにインクリメントするアプリケーションをコーディングしています。ボタンをクリックするだけで作業するための基本コードが得られましたが、最後のものが有効に読み込まれてから毎日更新されてから24時間が経過したときにのみテキストファイルを呼び出せます。NSDateとNSUserDefaultsを使ってテキストファイルをインクリメントするiPhoneアプリ

それが24時間以上インクリメントされていると、次を呼び出した場合、私は、ファイルが呼び出されたことを前回を格納し、現在の時刻と比較しNSDateとNSUserDefaultsを使用してこれを行うにしようとしています。

しかし、物事を追加しようとした後、下のベースコードを変更すると、私はそれを動作させる方法を理解できません。私は十分な経験がなく、言語をよく知っていないか、ちょっとばかげていて、本当に簡単なことが分からないので、これが単なるものかどうかはわかりません。

ご協力いただければ幸いです。

NSDate *nowDate = [NSDate date]; 
[[NSUserDefaults standardUserDefaults] setObject:nowDate forKey:@"LastLoaded"]; 

NSDate *lastLoaded = [[NSUserDefaults standardUserDefaults] objectForKey:@"LastLoaded"]; 

NSDate *checkDate = [NSDate dateWithTimeIntervalSinceNow:-24*60*60]; 
if([lastLoaded compare:checkDate] == NSOrderedAscending) { 
    static int number = 1; 
    NSString *filePath = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%i",number++] ofType:@"txt"]; 
    if (filePath) { 
     NSString *textFromFile = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil]; 
     if (textFromFile) { 
      textView.text = textFromFile; 
     } 
    } 
} 
+0

コードを実行するとどうなりますか? – yuji

+0

最初のテキストファイルが表示されますが、24時間後に日付を変更しても最初のテキストファイルが表示され、更新されません。 – Lanny

答えて

1

コードにバグがあります。 NSUserDefaultsから最後の更新日を取得していません。 2番目のコード行でLastUpdateateを現在の日付で上書きするので、現在の日付を取得しています。

//NSDate *nowDate = [NSDate date]; 
//[[NSUserDefaults standardUserDefaults] setObject:nowDate forKey:@"LastLoaded"]; 

NSDate *lastLoaded = [[NSUserDefaults standardUserDefaults] objectForKey:@"LastLoaded"]; 

//NSDate *checkDate = [NSDate dateWithTimeIntervalSinceNow:-24*60*60]; 
if ([lastLoaded timeIntervalSinceNow] < -24*60*60){ 
//Now you can update the NSUserDefaults 
[[NSUserDefaults standardUserDefaults] setObject:[NSDate date] forKey:@"LastLoaded"]; 
//if([lastLoaded compare:checkDate] == NSOrderedAscending) { 
static int number = 1; 
NSString *filePath = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%i",number++] ofType:@"txt"]; 
if (filePath) { 
    NSString *textFromFile = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil]; 
    if (textFromFile) { 
     textView.text = textFromFile; 
    } 
} 
} 
+0

まだ動作しません、最初のテキストファイルを表示し、更新しません。条件が真であるたびに、数値を1に戻してインクリメントを上書きするためです。 – Lanny

+0

少しデバッグできますか? Nslogに数字をつけて、その値を条件の中で見るのが好きですか?内部にnslogを置くことによって、すぐに解雇されるという条件ですか? – mbh

+0

NSLogを番号に追加し、システム日付を翌日に変更する間は1のままです。 – Lanny

関連する問題