0

質問で申し訳ありません。ボタンがクリックされる時間を節約する必要があります。

最初の時間と将来の時間とを比較し、それがより大きいか

メソッドまたはアラートを起動する必要があるのと同じ時間です。

これがコードです。

-(IBAction)checkInButtonClicked
{
    now = [NSDate date];
   [[NSUserDefaults standardUserDefaults]setObject:now forKey:@"theFutureDate"];

    NSTimeInterval timeToAddInDays = 60 * 60 * 24;
    theFutureDate = [now dateByAddingTimeInterval:timeToAddInDays];

    switch ([now compare:theFutureDate]){
    case NSOrderedAscending:{
    NSLog(@"NSOrderedAscending");

    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"" message:
    [NSString stringWithFormat:@"Oops! The Check In will activate after 24Hrs"] 
    delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil ];
    [alert show];
    }
    break;
    case NSOrderedSame:{
    NSLog(@"NSOrderedSame");
    [self insertPoints];
   }
    break;
    case NSOrderedDescending:{
    NSLog(@"NSOrderedDescending");
   }
    break;
   }
  }

しかし、このコードは正確には機能していません。誰か助けてください。

前もって感謝します。

4

1 に答える 1

0

now問題は、常に将来の日付と比較していることです。その比較は常に同じ結果になります。

私が正しく理解していれば、あなたはまったく逆のことを望んでいます。nowユーザーが最初にボタンをクリックしたときと比較する必要があります。NSUserDefaults初回のみ日付を設定し、2回目以降は比較します。

- (IBAction)checkInButtonClicked {     
    NSDate *now = [NSDate date];
    NSDate *firstTimeClicked = [[NSUserDefaults standardUserDefaults] objectForKey:@"firstTimeClicked"];
    if (firstTimeClicked) {
        /* this is at least the second time the button has been clicked */        
        NSTimeInterval delta = [now timeIntervalSinceDate:firstTimeClicked];
        if (delta > 24 * 3600) {
            /* button clicked > 1 day ago */
        } else {
            /* button clicked <= 1 day ago */
        }
    } else {
        /* not present in NSUserDefaults, it's first click */
        [[NSUserDefaults standardUserDefaults] setObject:now forKey:@"firstTimeClicked"];   
    }
}
于 2012-09-18T09:00:34.570 に答える