抱歉这个问题。我必须节省点击按钮的时间
第一次,然后将时间与未来时间进行比较,如果它大于或
等于我必须触发方法或警报的同时。
这是代码。
-(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;
}
}
但是这段代码并没有完全正常工作。任何人都可以帮帮我。
提前致谢。
答案 0 :(得分:0)
问题在于您总是将now
与未来日期进行比较。这种比较总是有相同的结果。
如果我理解正确,你想完全相反。您必须在用户第一次点击按钮时比较now
。因此,您只是第一次在NSUserDefaults
设置日期,并在第二次和随后的时间进行比较。
- (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"];
}
}