博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS工程中一天只让进行一次的操作如何做?
阅读量:5916 次
发布时间:2019-06-19

本文共 3591 字,大约阅读时间需要 11 分钟。

 转至: 

整体思路:当进行操作的时候记录操作时间存在偏好设置当中,当再次点击的时候获取现在的时间然后和之前记录的时间进行比较。如果是一天那么就提示“今天已经操作过了”,如果不是一天,那么可以正常操作,然后记录操作时间。如此循环往复。。。

 

这里的一天只能操作一次指的是:

(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];}

 

 

转载于:https://www.cnblogs.com/henusyj-1314/p/6382718.html

你可能感兴趣的文章
不再过度强调全闪性能,SolidFire眼中的新一代数据中心是啥样
查看>>
众多玩家进入智能服装研发,内衣袜子开始变得与众不同
查看>>
美国国土安全部部长约翰逊就Dyn网络攻击事件发表声明
查看>>
想在Windows 10中运行openSUSE?请参照此安装方法
查看>>
英特尔物联网的未来:以市场需求定义产品
查看>>
《Java程序设计习题精析与实验指导》一2.3 实验指导
查看>>
信息泄露,那些央视没报的“内鬼"
查看>>
中国光伏企业加快英国市场布局
查看>>
卡巴斯基面向工业控制系统推Industrial CyberSecurity
查看>>
从 Kaggle 困局,看国内数据竞赛平台如何突围
查看>>
云计算的下半场:详解三大运营商云计算最新策略
查看>>
互联网风控技术SaaS服务平台聚信立获1亿元B轮融资
查看>>
一文详解高斯混合模型(GMM)在图像处理中的应用(附代码)
查看>>
IBM 用机器学习寻找外星人,不用再望穿银河秋水
查看>>
微软为何不公布商店应用数量?可能是没脸说
查看>>
ATM制造商Diebold推自助结帐系统,助力消费者NFC结账
查看>>
机房需要使用免费的云备份服务吗?
查看>>
低碳城市建设市场大 索泰能源切中分布式光伏需求
查看>>
犀利语言解析零基础能不能学会前端?
查看>>
工业物联网设备投资 从这三个地方可回收成本
查看>>