• iOS工程中一天只让进行一次的操作如何做?


     转至: iosNSDateNSObject一天一次

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

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

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

     

  • 相关阅读:
    C#获取当前路径
    惠普辞退4000员工,今后如何走
    提升你的编码技能,你不知道的免费在线编码资源(上)
    iPhone 5在美销量有望破5000万,Facebook手机何去何从?
    Python获取命令行参数
    C#递归获取文件目录
    Pixel’d:共创美好的像素艺术
    PayPal走向现实支付,消费者们会来买帐吗?
    兼容性测试、手工测试、自动化测试及探索性测试
    冒烟测试 smoking test
  • 原文地址:https://www.cnblogs.com/henusyj-1314/p/6382718.html
Copyright © 2020-2023  润新知