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 = ;
notice.msgSrcType = ; 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 == ) {
[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];
}
iOS工程中一天只让进行一次的操作如何做?的更多相关文章
- ios工程中一天只让显示一次的广告,或是弹出窗,如何实现
需求: 产品 代码实现: 在首页.m中 //一天之内只能批量邀请一次 NSUserDefaults *userDefault = [NSUserDefaults standardUserDefault ...
- iOS 工程中文件变成红色是什么情况
iOS 工程中文件变成红色是原有的文件路径改变了,系统找不到了.
- 使用脚本删除ios工程中未使用图片
使用脚本删除ios工程中未使用图片 最近在读唐巧大神的<iOS开发进阶>,学到了一个大招:使用脚本删除ios中未使用的图片(纸书上有点小问题,参考github上的issue:使用脚本删除i ...
- react native 之 在现有的iOS工程中集成react native
在现有的iOS工程中集成react native, 或者说将react native引入到iOS 项目,是RN和iOS混合开发的必经之路 参考官网教程:https://reactnative.cn/d ...
- 把 Reative Native 47 版本集成到已有的 Native iOS 工程中
一.搭建开发环境 http://reactnative.cn/docs/0.46/getting-started.html#content 二.创建一个模板 运行以下命令,创建一个最新版本的 reac ...
- iOS工程中的info.plist文件的完整研究
原地址:http://blog.sina.com.cn/s/blog_947c4a9f0100zf41.html 们建立一个工程后,会在Supporting files下面看到一个"工程名- ...
- iOS工程中的info.plist文件
我们建立一个工程后,会在Supporting files下面看到一个"工程名-Info.plist"的文件,这个是对工程做一些运行期配置的文件,很重要,不能删除. 如果你在网上下载 ...
- ios工程中ARC与非ARC的混合
ARC与非ARC在一个项目中同时使用, 1,选择项目中的Targets,选中你所要操作的Target,2,选Build Phases,在其中Complie Sources中选择需要ARC的文件双击,并 ...
- iOS工程中如何去掉第三方的警告
一)第一种方法 在工程中有警告的地方,右键选择Review in log,然后就能看到类似[Wnonnull]这样的警告, 然后在工程buildSettings中的Other Warning Flag ...
随机推荐
- WP Mail SMTP插件解决Contact Form 7表单提交失败问题
WP Mail SMTP插件解决Contact Form 7表单提交失败问题 WP Mail SMTP是一款非常优秀的解决WordPress主机因为不支持或者是禁用了mail()函数,导致无法实现在线 ...
- 32-2题:LeetCode102. Binary Tree Level Order Traversal二叉树层次遍历/分行从上到下打印二叉树
题目 给定一个二叉树,返回其按层次遍历的节点值. (即逐层地,从左到右访问所有节点). 例如: 给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 ...
- Node 操作MySql数据库
1, 需要安装 MySQL 依赖 => npm i mysql -D 2, 封装一个工具类 mysql-util.js // 引入 mysql 数据库连接依赖 const mysql = re ...
- 【PHP】php中json_decode()和json_encode()
1.json_decode() json_decode (PHP 5 >= 5.2.0, PECL json >= 1.2.0) json_decode — 对 JSON 格式的字符串进行 ...
- Redis之List类型操作
接口: package com.net.test.redis.base.dao; import java.util.List; /** * @author *** * @Time:2017年8月10日 ...
- Django框架基础知识01-配置环境
Django框架 Django是个怎样的东西呢? Web应用框架----Django http服务器:用来接受用户请求,并将请求转发给web应用框架进行处理. Web应用框架处理完以后再发送给htt ...
- Python3爬取起点中文网阅读量信息,解决文字反爬~~~附源代码
起点中文网,在“数字”上设置了文字反爬,使用了自定义的文字文件ttf通过浏览器的“检查”显示的是“□”,但是可以在网页源代码中找到映射后的数字正则爬的是网页源代码,xpath是默认utf-8解析网页数 ...
- CSAPP 缓冲区溢出试验
缓冲区溢出试验是CSAPP课后试验之一,目的是: 更好的理解什么是缓冲区溢出 如何攻击带有缓冲区溢出漏洞的程序 如何编写出更加安全的代码 了解并理解编译器和操作系统为了让程序更加安全而提供的几种特性 ...
- 6、python中的元组
元组(tuple)是python中有序.不可变的数据结构.元组还是python四种数据结构中唯一一种不可变的数据结构. 一.前言 元组在很多方面都变现得跟列表一样,除了列表储存得对象是可变得,而元组储 ...
- POJ 3041 Asteroids (二分图最小点覆盖集)
Asteroids Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 24789 Accepted: 13439 Descr ...