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 ...
随机推荐
- Codeforces Round #435 (Div. 2) B (二分图) C(构造)
B. Mahmoud and Ehab and the bipartiteness time limit per test 2 seconds memory limit per test 256 me ...
- Codeforces Round #460 (Div. 2)-B. Perfect Number
B. Perfect Number time limit per test2 seconds memory limit per test256 megabytes Problem Descriptio ...
- 手机注册过哪些网站37kfenxi.com,查询注册过哪些网站
注册过哪些网站?发现这么一个网站,https://www.37kfenxi.com?_=cnblogs 可以根据手机号码查询注册过哪些网站,然后通过大数据分析出机主的性格,爱好等. 据说还可以查老板, ...
- Java文件 ---流
分类 根据数据走向,分为输入流.输出流 根据处理的数据类型,分为字节流.字符流 字节流 可以处理所有类型的数据,如MP3.图片.文字.视频等.在读取时,读到一个字节就返回一个字节. 在Java中对应的 ...
- 谈一谈Tomcat中webSocket,Jetty WebSocket 和Spring WebSocket以及github中Java-WebSocket.jar分别对Socket协议的角色定位以及效果的不同点;
开局先上一张图:(http://tomcat.apache.org/tomcat-7.0-doc/web-socket-howto.html) 当前截图来自于apache的tomcat官网(问:为 ...
- cf979d Kuro and GCD and XOR and SUM
set做法 正解是trie-- 主要是要学会 \(a\ \mathrm{xor}\ b \leq a+b\) 这种操作 #include <iostream> #include <c ...
- socketCluster 使用
<html> <head> <title>test</title> <script src="https://cdn.bootcss.c ...
- Windows网络编程笔记1
第一部分 传统网络API 传统的网络接口NetBIOS.重定向器.邮槽.命名管道等.第一,NetBIOS(Network Basic Input/Output System, NetBIOS)“网络基 ...
- CSU-1980 不堪重负的树
CSU-1980 不堪重负的树 Description 小X非常喜欢树,然后他生成了一个大森林给自己玩. 玩着玩着,小X陷入了沉思. 一棵树由N个节点组成,编号为i的节点有一个价值Wi. 假设从树根出 ...
- Leetcode 639.解码方法2
解码方法2 一条包含字母 A-Z 的消息通过以下的方式进行了编码: 'A' -> 1 'B' -> 2 ... 'Z' -> 26 除了上述的条件以外,现在加密字符串可以包含字符 ' ...