2016-03-21 10 views
1

私はObjective Cの初心者で、Jsonからデータを保存しようとしています。私はそれをうまくやった、私のプログラムは、インターネット上のJsonからデータを取り出して保存する。しかし、私シャットダウンアプリやインターネットせずに再起動し、それが代わりに負荷データの再度ダウンロードして保存しようとしたときに(私はデータが削除されていたと思います)Objective CのJsonからデータを保存する問題

これは私のコードです:

- (NSData *)saveAllScheduleData:(NSString *)endpointOfTheChannel { 
    NSData *channelData; 

    NSDateFormatter *dateFormatDuration = [[NSDateFormatter alloc] init]; 
    [dateFormatDuration setDateFormat:@"HH:mm:ss"]; 
    NSDate *duration = [dateFormatDuration dateFromString:@"23:59:59"]; 
    NSDate *dateOfSave = [[NSUserDefaults standardUserDefaults] valueForKey:@"dateOfSave"]; 
    NSCalendar *calendar = [NSCalendar currentCalendar]; 

    NSDate *currentDate = [NSDate date]; 
    [calendar components:(NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond) fromDate:currentDate]; 

    NSDateComponents *comps = [calendar components:(NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond) fromDate:duration]; 
    NSDate *nextSaveDate = [calendar dateByAddingComponents:comps toDate:dateOfSave options:0]; 

    NSString *url = [NSString stringWithFormat:@"https://apis.is%@", endpointOfTheChannel]; 
    if ([[NSUserDefaults standardUserDefaults] valueForKey: url] && [currentDate compare:nextSaveDate] == NSOrderedAscending) { 
     return channelData = [[NSUserDefaults standardUserDefaults] valueForKey: url]; 
    } else { 
     channelData = [NSData dataWithContentsOfURL:[NSURL URLWithString:url]]; 
     [calendar components:(NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond) fromDate:dateOfSave]; 
     [[NSUserDefaults standardUserDefaults] setObject:dateOfSave forKey:@"dateOfSave"]; 
     [[NSUserDefaults standardUserDefaults] setObject:channelData forKey:url]; 
     return channelData; 
    } 
} 

はい、毎日データをリロードしようとしましたが、そのバグの瞬間には無駄です。

ありがとうございました。

+0

どのようにアプリをシャットダウンしていますか? –

+0

私はメインボタンをタップしてアプリをオフにします。 –

+0

あなたはあなたの 'if文 'に2つの条件を持っています。 2番目の条件が成立していない –

答えて

1

あなたのif statement

での2つの条件が第2の条件が要件を満たしていないかもしれませ持っています。

NSUserDefaultsにデータを保存するときは、適切なKeysを使用して保存してください(これは正常ではありませんでした)。変数NSString *urlKeyとして使用しています。これはいつでも変更される可能性があり、KeyからNSUserDefaultsにアクセスできなくなります。 dateOfSaveを保存するのと同じように、定数keyになる可能性があります。

あなたはそれを手に入れようと思います。

0

あなたはそれを保存するとき

[[NSUserDefaults standardUserDefaults] synchronize] 
を呼び出すとuserdefaultsを同期する必要があります。

+0

まだ動作していません。保存した後にラインを追加します。 –

関連する問題