您的位置:首页 > 移动开发 > IOS开发

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

2017-07-05 16:16 204 查看
项目完结了,终于有时间来整理一下啦

#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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios 文档