项目中实用的一些方法,有需要的进来看看

这篇博客汇总了iOS开发中的一些实用方法,包括正则表达式验证密码、手机号、身份证,数组转json字符串,计算文字frame,设置视图边框,获取时间戳,appstore版本检查,MD5加密以及DES加密等常用操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


项目完结了,终于有时间来整理一下啦


#pragma mark -------- 正则匹配用户密码6-18位数字和字母组合

+ (BOOL)checkPassword:(NSString *) password

{

    NSString *pattern =@"^(?![0-9]+$)(?![a-zA-Z]+$)[a-zA-Z0-9]{6,18}";

    NSPredicate *pred = [NSPredicatepredicateWithFormat:@"SELF MATCHES %@", pattern];

    BOOL isMatch = [predevaluateWithObject:password];

    return isMatch;

    

}

#pragma mark -------- 正则匹配手机号

+ (BOOL)checkTelNumber:(NSString *) telNumber

{

    NSString *pattern =@"^1+[34578]+\\d{9}";

    NSPredicate *pred = [NSPredicatepredicateWithFormat:@"SELF MATCHES %@", pattern];

    BOOL isMatch = [predevaluateWithObject:telNumber];

    return isMatch;

}

#pragma mark ----- 验证身份证号

+ (BOOL) validateIdentityCard: (NSString *)identityCard

{

    BOOL flag;

    if (identityCard.length <=0) {

        flag = NO;

        return flag;

    }

    NSString *regex2 =@"^(\\d{14}|\\d{17})(\\d|[xX])$";

    NSPredicate *identityCardPredicate = [NSPredicatepredicateWithFormat:@"SELF MATCHES %@",regex2];

    return [identityCardPredicateevaluateWithObject:identityCard];

}


#pragma mark -------- 数组转json字符串

+ (NSMutableString*)StringToJson:(NSArray *)array

{

    NSError *parseError =nil;

    NSData *jsonData = [NSJSONSerializationdataWithJSONObject:arrayoptions:NSJSONWritingPrettyPrintederror:&parseError];

    return [[NSMutableStringalloc] initWithData:jsonDataencoding:NSUTF8StringEncoding];

}

#pragma mark -------- 根据文字,字体宽度得出frame

+(CGRect)getWidthString:(NSString *)string font:(int )font width:(int )width{

    NSDictionary *dic =@{NSFontAttributeName : [UIFontsystemFontOfSize:font]};

    CGRect rect = [stringboundingRectWithSize:CGSizeMake(MAIN_SCREEN_WIDTH-width,10000) options:NSStringDrawingUsesLineFragmentOriginattributes:dic context:nil];

    

    return rect;

}

#pragma mark -------- 根据需求调节视图边框弧度,宽度,颜色

+ (void)viewRadiusAll:(UIView *)view Radius:(int )Radius borderWidth:(int )borderWidth color:(UIColor *)color{

    view.userInteractionEnabled=YES;

    view.layer.cornerRadius=Radius;

    view.layer.borderColor = color.CGColor;

    view.layer.borderWidth = borderWidth;

    view.layer.masksToBounds=YES;

}

#pragma mark -------- 获取当前时间戳

+ (NSString *)getTimeStamp{

    NSTimeInterval time = [[NSDatedate] timeIntervalSince1970]*1000;

    long long  timestamplong = [[NSNumbernumberWithDouble:time] longLongValue];

    NSString *timestamp = [NSStringstringWithFormat:@"%lld",timestamplong];

    return timestamp;

}


#pragma mark -------- 获取当前年月日时分秒

+ (NSString *)getTimeStampDate{

    NSTimeInterval time = [[NSDatedate] timeIntervalSince1970]*1000;

    long long  timestamplong = [[NSNumbernumberWithDouble:time] longLongValue];

    NSString *timestamp = [NSStringstringWithFormat:@"%lld",timestamplong];

    

    NSDate *date = [NSDatedateWithTimeIntervalSince1970:[timestampdoubleValue]/1000];

    NSDateFormatter *dateFormat=[[NSDateFormatteralloc]init];

    [dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss"];//HH:mm:ss

    NSString* string=[dateFormatstringFromDate:date];

    

    return string;

}


#pragma mark --------  获取appstore版本号

+(void)getVersion:(AppVersionBlock)block{

    NSString *path = [[NSStringalloc] initWithFormat:@"http://itunes.apple.com/lookup?id=%@",APP_ID];

    

    NSURL *url = [NSURLURLWithString:path];

    NSMutableURLRequest *request = [NSMutableURLRequestrequestWithURL:url

                                                           cachePolicy:NSURLRequestReloadIgnoringCacheData

                                                       timeoutInterval:10];

    

    [request setHTTPMethod:@"POST"];

    

    

    NSOperationQueue *queue = [NSOperationQueuenew];

    

    [NSURLConnectionsendAsynchronousRequest:requestqueue:queue completionHandler:^(NSURLResponse *response,NSData *data,NSError *error){

        NSMutableDictionary *receiveStatusDic=[[NSMutableDictionaryalloc]init];

        if (data) {

            

            NSDictionary *receiveDic = [NSJSONSerializationJSONObjectWithData:data options:NSJSONReadingMutableLeaveserror:nil];

            if ([[receiveDicvalueForKey:@"resultCount"]intValue]>0) {

                

                [receiveStatusDic setValue:@"1"forKey:@"status"];

                [receiveStatusDic setValue:[[[receiveDicvalueForKey:@"results"]objectAtIndex:0]valueForKey:@"version"]  forKey:@"version"];

            }else{

                

                [receiveStatusDic setValue:@"-1"forKey:@"status"];

            }

        }else{

            [receiveStatusDic setValue:@"-1"forKey:@"status"];

        }

        

        block(receiveStatusDic[@"version"]);

       

    }];

}



#pragma mark -------- MD5 16位加密

+ (NSString *)md5_16:(NSString *)str

{

    constchar *cStr = [str UTF8String];

    unsignedchar result[16];

    CC_MD5( cStr, (unsignedint)strlen(cStr), result );

    return [NSStringstringWithFormat:

            @"%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X",

            result[0], result[1], result[2], result[3], result[4], result[5], result[6], result[7],

            result[8], result[9], result[10], result[11], result[12], result[13], result[14], result[15]

            ];

}


#pragma -------- MD5 32位加密

+(NSString *)md5_32:(NSString *)str {

    if (str ==nil) {

        returnnil;

    }

    constchar *cStr = [str UTF8String];

    unsignedchar result[32];

    CC_MD5( cStr, (unsigned)strlen(cStr), result );

    return [NSStringstringWithFormat:

            @"%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X",

            result[0], result[1], result[2], result[3],

            result[4], result[5], result[6], result[7],

            result[8], result[9], result[10], result[11],

            result[12], result[13], result[14], result[15]

            ];

}


//DES加密

+(NSString  *)DESPassword:(NSString *)pw WithKey:(NSString *)key_des{

    

    char buffer [1024] ;

    

    memset(buffer,0, sizeof(buffer));

    

    size_t numBytesEncrypted ;

    

    unsignedint len_pw = (int)[pwlength];

    char plaintext[len_pw +1];

    strcpy(plaintext, [pwUTF8String]);

    

    unsignedint len_key = (int)[key_deslength];

    char key[len_key +1];

    strcpy(key, [key_desUTF8String]);

    CCCryptorStatus cryptStatus =CCCrypt(kCCEncrypt,

                                          kCCAlgorithmDES,

                                          kCCOptionPKCS7Padding |kCCOptionECBMode,

                                          key,

                                          kCCKeySizeDES,

                                          NULL,

                                          plaintext,

                                          strlen(plaintext),

                                          buffer,

                                          1024,

                                          &numBytesEncrypted);

    

    // 这里少了对返回值的判断:cryptStatus=kCCSuccess

    if (cryptStatus ==kCCParamError) return@"PARAM ERROR";

    else if (cryptStatus == kCCBufferTooSmall)return @"BUFFER TOO SMALL";

    else if (cryptStatus == kCCMemoryFailure)return @"MEMORY FAILURE";

    else if (cryptStatus == kCCAlignmentError)return @"ALIGNMENT";

    else if (cryptStatus == kCCDecodeError)return @"DECODE ERROR";

    else if (cryptStatus == kCCUnimplemented)return @"UNIMPLEMENTED";

    

    NSData *data = [NSDatadataWithBytes:buffer length:numBytesEncrypted];

    

    NSString *str1 = [datadescription];

    str1 = [str1 substringWithRange:NSMakeRange(1, [str1 length]-2)];

    

    str1=[[str1 stringByReplacingOccurrencesOfString:@" "withString:@""]uppercaseString];

    return    str1;

}

#pragma mark---- url中获取视频文件名称

+(NSString *)getfileNameFromNsurl:(NSURL *)url

{

    NSString *parameterString = [urlquery];

    NSArray *parameters = [parameterStringcomponentsSeparatedByString:@"&"];

    NSString *fileName =nil;

    for (NSString *prin parameters) {

        if ([prhasPrefix:@"vid="]) {

            fileName = [pr substringWithRange:NSMakeRange(4, pr.length - 4)];

            break;

        }

    }

    return fileName;

}


#pragma mark---- 判断数据是否为空

+(BOOL)checkEmpty:(id)checkObj

{

    if (nil == checkObj || [checkObjisKindOfClass:[NSNullclass]]) {

        returnYES;

    }

    

    if ([checkObjisKindOfClass:[NSStringclass]]) {

        NSString *str = (NSString *)checkObj;

        NSString *strWithoutWhitespace = [strtrim];

        if ([@"(null)"isEqualToString:str]){

            returnYES;

        }

        if ([strWithoutWhitespacelength] == 0) {

            returnYES;

        }

    }

    

    if ([checkObjisKindOfClass:[NSArrayclass]]) {

        NSArray *arr = (NSArray *)checkObj;

        if (!([arrcount] > 0)) {

            returnYES;

        }

    }

    

    returnNO;

}



//获取当前屏幕显示的viewcontroller

- (UIViewController *)getCurrentVC

{

    UIViewController *rootViewController = [UIApplication sharedApplication].keyWindow.rootViewController;

    

    UIViewController *currentVC = [self getCurrentVCFrom:rootViewController];

    

    return currentVC;

}


- (UIViewController *)getCurrentVCFrom:(UIViewController *)rootVC

{

    UIViewController *currentVC;

    

    if ([rootVC presentedViewController]) {

        // 视图是被presented出来的

        

        rootVC = [rootVC presentedViewController];

    }

    

    if ([rootVC isKindOfClass:[UITabBarController class]]) {

        // 根视图为UITabBarController

        

        currentVC = [self getCurrentVCFrom:[(UITabBarController *)rootVC selectedViewController]];

        

    } else if ([rootVC isKindOfClass:[UINavigationController class]]){

        // 根视图为UINavigationController

        

        currentVC = [self getCurrentVCFrom:[(UINavigationController *)rootVC visibleViewController]];

        

    } else {

        // 根视图为非导航类

        

        currentVC = rootVC;

    }

    

    return currentVC;

}




分享类

链接: https://pan.baidu.com/s/1eScPBr0 密码: zfi5


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值