iOS工程中一天只让进行一次的操作如何做?
整体思路:当进行操作的时候记录操作时间存在偏好设置当中,当再次点击的时候获取现在的时间然后和之前记录的时间进行比较。如果是一天那么就提示“今天已经操作过了”,如果不是一天,那么可以正常操作,然后记录操作时间。如此循环往复。。。
这里的一天只能操作一次指的是:
(24点指的是凌晨12:00,也就是00:00)
1、某一天任意时间点到24点之间。
2、只要过了24点,立马可以进行第二次操作。
3、假如你是23:59进行了一次操作,那么过了一分钟以后那就算第二天的了。所以可以进行第二次操作。
4、所以记住:不是在24小时之内。而是某一天之内。
首先我们要做的操作一般是网络请求,所以这里就拿网络请求为例,当我们点击按钮,触发方法inviteParent然后判断是否一天之内,如果不是,那么进行网络请求,那么此时今天的一次机会就用了。。。所以加入网络请求成功,那么此时记录现在的时间:
主要方法:
NSDate *nowDate = [NSDate date]; NSUserDefaults *dataUser = [NSUserDefaults standardUserDefaults]; [dataUser setObject:nowDate forKey:@"nowDate"]; [dataUser synchronize];
代码示例:
-(void)DoInviteParentsWithPersons:(NSArray *)array groups:(NSArray *)groupArray usersType:(NSInteger)userType { SendNoticeBody *notice = [[SendNoticeBody alloc]init]; notice.msgType = 1; notice.msgSrcType = 0; NSDictionary *destInfo = nil; destInfo = [[NSDictionary alloc]initWithObjectsAndKeys:notice.destPersons,@"person", nil]; __weak __typeof(self)weakSelf = self; SendInvitePreNoticeSection *sec = [[SendInvitePreNoticeSection alloc]initWithMsgType:notice.msgType MsgSrcType:notice.msgSrcType DestInfo:destInfo NoticeContent:notice.msgContent SignName:notice.signName SourceId:notice.sourceId DepartFileIds:notice.fileIds ResultBlock:^(NSDictionary *dict, BOOL resultFlag, NSError *error) { if (resultFlag) { NSInteger resultCode = [dict JSONIntegerObjectForKey:@"resultCode"]; if (resultCode == 1) { [self showSuccessHubContent:@"邀请发送成功"]; NSDate *nowDate = [NSDate date]; NSUserDefaults *dataUser = [NSUserDefaults standardUserDefaults]; [dataUser setObject:nowDate forKey:@"nowDate"]; [dataUser synchronize]; }else{ NSString *errmsg = [dict objectForKey:@"resultMsg"]; [self showErrorHubContent:errmsg]; } }else{ } }]; [sec exec]; }
那么当第二次进行按钮点击的时候,就会获取现在的时间和之前记录的时间进行对比,如果是同一天,那么就不可以再次点击了。提示“每日仅能批量邀请一次”,按钮的点击时间代码如下:
-(void)inviteParent { //一天之内只能批量邀请一次 NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults]; // NSLog(@"之前时间:%@", [userDefault objectForKey:@"nowDate"]);//之前存储的时间 // NSLog(@"现在时间%@",[NSDate date]);//现在的时间 NSDate *now = [NSDate date]; NSDate *agoDate = [userDefault objectForKey:@"nowDate"]; NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"yyyy-MM-dd"]; NSString *ageDateString = [dateFormatter stringFromDate:agoDate]; NSString *nowDateString = [dateFormatter stringFromDate:now]; // NSLog(@"日期比较:之前:%@ 现在:%@",ageDateString,nowDateString); if ( [ageDateString isEqualToString:nowDateString]) { [self showErrorHubContent:@"每日仅能批量邀请一次"]; }else { [self DoInviteParentsWithPersons:array groups:groupArray usersType:nil]; } }
主要代码:
NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults]; // NSLog(@"之前时间:%@", [userDefault objectForKey:@"nowDate"]);//之前存储的时间 // NSLog(@"现在时间%@",[NSDate date]);//现在的时间 NSDate *now = [NSDate date]; NSDate *agoDate = [userDefault objectForKey:@"nowDate"]; NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"yyyy-MM-dd"]; NSString *ageDateString = [dateFormatter stringFromDate:agoDate]; NSString *nowDateString = [dateFormatter stringFromDate:now]; // NSLog(@"日期比较:之前:%@ 现在:%@",ageDateString,nowDateString); if ( [ageDateString isEqualToString:nowDateString]) { [self showErrorHubContent:@"每日仅能批量邀请一次"]; }else { [self DoInviteParentsWithPersons:array groups:groupArray usersType:nil]; }