一日一度だけ何かする処理のメモ

パズドラをやった事はないですが、
一日一度だけアラートを表示する等の処理を、
UserDefaultsで作成してみたのでメモ。
(20131218微妙に修正)

1.起動時にアラート表示日を保存
2.アラート表示日がなければアラート表示
3.アラート表示日が前回表示日と変わっていたらアラート表示

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    // アラート表示確認
    NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
    if ([ud valueForKey:@"showAlertAt"])
    {
        // 前回アラート表示日があり、日付が変わっていればアラート再表示
        NSString *saveDateStr = [ud valueForKey:@"showAlertAt"];
        if ([saveDateStr compare:[self str_today_yyyyMMdd]] != NSOrderedSame)
        {
            NSLog(@"アラート起動処理");
        }
    }
    else
    {
        // アラート表示日がなければ初回起動なのでアラート表示
        NSLog(@"アラート起動処理");
        [ud setObject:[self str_today_yyyyMMdd] forKey:@"showAlertAt"];
        [ud synchronize];
    }
}

/*!今日の日付をyyyyMMdd文字列で返す */
- (NSString *)str_today_yyyyMMdd
{
    // 今日の日付を作る、GMT+-0のTimeZoneをセットしユーザー設定による影響を回避
    NSDate *date = [NSDate date];
    NSDateFormatter *df = [[NSDateFormatter alloc] init];
    [df setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
    [df setDateFormat:@"yyyy/MM/dd"];
    
    return [df stringFromDate:date];
}