项目中实用的一些方法,有需要的进来看看
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
#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
相关文章推荐
- 平时在做ASP.NET项目里经常使用的一些函数和方法
- 平时在做ASP.NET项目里经常使用的一些函数和方法
- 简单是一种美:提高项目成功率的一些方法
- 收集javascript的一些实用方法!
- CryptTool 封装了一些加密工具方法-实用
- 最近要做个项目,遇到一些关于ansys问题,看看兄弟们能否帮我解决?
- 数据库一些实用方法
- 一些Asp技巧和实用解决方法
- 加载设计器时遇到一个或多个错误。这些错误在下面列出。一些错误可通过重新生成项目来修复,而另一些错误则需要更改代码。
- CryptTool 封装了一些加密工具方法-实用
- 平时在做ASP.NET项目里经常使用的一些函数和方法〔zz〕
- 一些搜集的实用方法
- 平时在做ASP.NET项目里经常使用的一些函数和方法
- 一些Asp技巧和实用解决方法
- 平时在做ASP.NET项目里经常使用的一些函数和方法
- 这两者需要映射到相同的服务器,从而无法打开项目的解决方法:
- 项目中遇到的一些小问题及解决方法
- 平时在做ASP.NET项目里经常使用的一些函数和方法
- 简单是一种美:提高项目成功率的一些方法
- 我们来看看load data infile 需要注意的一些地方