iOS 工具类
来源:互联网 发布:有意义的化学式 知乎 编辑:程序博客网 时间:2024/05/16 10:13
工具类声明
#import <Foundation/Foundation.h>@interface DzcDES : NSObject+ (NSString *)encryptWithText:(NSString *)sText encryptWithKey:(NSString *)key encryptWithIv:(NSString *)iv;//加密+ (NSString *)decryptWithText:(NSString *)sText decryptWithKey:(NSString *)key decryptWithIv:(NSString *)iv;//解密+(NSString *)DZCTimer;//获得时间戳+(NSString *)getCurrentTime;//获取当前时间//将token值截取成两部分放到数组里面+(NSMutableArray *)XiuGaiToken:(NSString *)key;//得到路径的文件扩展名不带.+(NSString *)getTheSuffixName:(NSString *)path;//对字符串进行DES加密+(NSString *)jiamiString:(NSString *)_str;+(NSString *)jiemiString:(NSString *)_str;//得到手机当前IP地址+ (NSString *)getIPAddress;//得到手机标识+(NSString *)getIdentifierStr;//将字符串转换为字典+(NSDictionary *)dictionaryWithJsonString:(NSString *)jsonString;//将字符串变成数组对象+(NSArray *)arrayWithJsonString:(NSString *)jsonstring;//警报+(void)alert:(NSString *)msg;//剔除字符串两端的空格+(NSString *)trim:(NSString *)_str;//汉子转拼音+(NSString *)hanZiToPinYin:(NSString *)_str;//获取网络类型+(NSString *)networktype;//获取运营商名字+(NSString *)getcarrierName;//重定向URL+(void)getNewUrlPassOldUrl:(NSString *)_oldUrl;//得到用户手机操作系统版本+(NSString *)getUserphoneModel;//得到用户操作系统版本+(NSString *)getUserPhoneVersion;//获取软件版本+(NSString *)getAppVersion;//检测手机系统剩余空间大小+ (NSString *)freeDiskSpaceInBytes;//获取缓存文件的大小+(long long)fileSizeAtPath:(NSString *)filePath;//base64解编码+(NSString *)DecodeBase64:(NSString *)_str;+(NSString *)Base64Code:(NSData *)_data;+(void)handAppconfig;+(NSString *)testUrl:(NSString *)_ImageUrl;//获取当前网速+ (NSArray *)getDataCounters;+ (NSString *) macaddress;+(UIImage*)getSubImage:(UIImage *)img;+(UIImage*)getSubImage:(UIImage *)image mCGRect:(CGRect)mCGRect centerBool:(BOOL)centerBool;//判断字符串是否为身份证号+ (BOOL) validateIdentityCard: (NSString *)identityCard;//解析服务器返回的数据+(id)HandleDataWith:(id )_data andModa:(NSObject *)_objc;//本地加密字符串+ (NSString *)JiamiLocal:(NSString *)str;//本地解密+(NSString *)JieMiLocal:(NSString *)str;@end
工具类实现
#import "DzcDES.h"#import "DZCUiapplication.h"#import"GTMBase64.h"#import<CommonCrypto/CommonCryptor.h>#import <CommonCrypto/CommonDigest.h>#include <ifaddrs.h>#include <arpa/inet.h>#import <CoreTelephony/CTTelephonyNetworkInfo.h>#import <CoreTelephony/CTCarrier.h>#import <sys/utsname.h>#import <sys/param.h>#import <sys/mount.h>#import <net/if_var.h>#import <sys/socket.h>#import <sys/sysctl.h>#import <net/if.h>#import <net/if_dl.h>#import "WHC_DataModel.h"@interface DzcDES()@end@implementation DzcDES//对字符串加密+ (NSString *)encryptWithText:(NSString *)sText encryptWithKey:(NSString *)key encryptWithIv:(NSString *)iv{ //kCCEncrypt 加密 return [self encrypt:sText encryptOrDecrypt:kCCEncrypt key:key encryptOperationIv:iv];}//对字符串解密+ (NSString *)decryptWithText:(NSString *)sText decryptWithKey:(NSString *)key decryptWithIv:(NSString *)iv{ //kCCDecrypt 解密 return [self encrypt:sText encryptOrDecrypt:kCCDecrypt key:key encryptOperationIv:iv];}//获取时间戳+(NSString *)DZCTimer{ NSDateFormatter *format=[[NSDateFormatter alloc]init]; [format setDateFormat:@"yyyy-MM-dd hh:mm:ss"]; NSDate *date2=[NSDate date]; NSDate *date=[format dateFromString:@"2016-04-15 00:00:00"]; //NSString *timeSp = [NSString stringWithFormat:@"%ld", (long)[date2 timeIntervalSinceDate:date]*1000]; //NSTimeInterval interval = [date2 timeIntervalSinceDate:date]*1000; NSString *timeSp=[NSString stringWithFormat:@"%lld",(long long)[date2 timeIntervalSinceDate:date]*1000 ]; //DLog(@"时间%@--%@",date,date2); return timeSp; /* NSDate *dates = [NSDate date]; NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; NSTimeZone* timeZone = [NSTimeZone timeZoneWithName:@"Asia/beijing"]; [formatter setTimeZone:timeZone]; NSDate *date1=[formatter dateFromString:@"2016-04-15 00:00:00"]; NSString *loctime = [formatter stringFromDate:dates]; NSString *time=[formatter stringFromDate:date1]; DLog(@"%@--%@",dates,time); return loctime; */ //DLog(@"timeSp:%@",timeSp); //时间戳的值}+(NSString *)getCurrentTime{ NSDate *date=[NSDate date]; NSDateFormatter *formatter=[[NSDateFormatter alloc]init]; [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; NSTimeZone *timezone=[NSTimeZone timeZoneWithName:@"Asia/beijing"]; [formatter setTimeZone:timezone]; NSString *time=[formatter stringFromDate:date]; return time;}//将token值截取两个放到一个数组里面+(NSMutableArray *)XiuGaiToken:(NSString *)key{ NSMutableString *string=[NSMutableString stringWithFormat:@"%@0000000000000000",key]; NSString *newstr=[string substringToIndex:8]; NSMutableArray *arr=[NSMutableArray arrayWithObject:newstr]; newstr=[string substringWithRange:NSMakeRange(8, 8)]; [arr addObject:newstr]; return arr;}+ (NSString *)encrypt:(NSString *)sText encryptOrDecrypt:(CCOperation)encryptOperation key:(NSString *)key encryptOperationIv:(NSString *)initIv{ const void *dataIn; size_t dataInLength; if (encryptOperation == kCCDecrypt)//传递过来的是decrypt 解码 { //解码 base64 NSData *decryptData = [GTMBase64 decodeData:[sText dataUsingEncoding:NSUTF8StringEncoding]];//转成utf-8并decode dataInLength = [decryptData length]; dataIn = [decryptData bytes]; } else //encrypt { NSData* encryptData = [sText dataUsingEncoding:NSUTF8StringEncoding]; dataInLength = [encryptData length]; dataIn = (const void *)[encryptData bytes]; } /* DES加密 :用CCCrypt函数加密一下,然后用base64编码下,传过去 DES解密 :把收到的数据根据base64,decode一下,然后再用CCCrypt函数解密,得到原本的数据 */ CCCryptorStatus ccStatus; uint8_t *dataOut = NULL; //可以理解位type/typedef 的缩写(有效的维护了代码,比如:一个人用int,一个人用long。最好用typedef来定义) size_t dataOutAvailable = 0; //size_t 是操作符sizeof返回的结果类型 size_t dataOutMoved = 0; dataOutAvailable = (dataInLength + kCCBlockSizeDES) & ~(kCCBlockSizeDES - 1); dataOut = malloc( dataOutAvailable * sizeof(uint8_t)); memset((void *)dataOut, 0x0, dataOutAvailable);//将已开辟内存空间buffer的首 1 个字节的值设为值 0 const void *vkey = (const void *) [key UTF8String]; const void *iv = (const void *) [initIv UTF8String]; //CCCrypt函数 加密/解密 ccStatus = CCCrypt(encryptOperation,// 加密/解密 kCCAlgorithmDES,// 加密根据哪个标准(des,3des,aes。。。。) kCCOptionPKCS7Padding,// 选项分组密码算法(des:对每块分组加一次密 3DES:对每块分组加三个不同的密) vkey, //密钥 加密和解密的密钥必须一致 kCCKeySizeDES,// DES 密钥的大小(kCCKeySizeDES=8) iv, // 可选的初始矢量 dataIn, // 数据的存储单元 dataInLength,// 数据的大小 (void *)dataOut,// 用于返回数据 dataOutAvailable, &dataOutMoved); NSString *result = nil; if (encryptOperation == kCCDecrypt)//encryptOperation==1 解码 { //得到解密出来的data数据,改变为utf-8的字符串 result = [[NSString alloc] initWithData:[NSData dataWithBytes:(const void *)dataOut length:(NSUInteger)dataOutMoved] encoding:NSUTF8StringEncoding] ; } else //encryptOperation==0 (加密过程中,把加好密的数据转成base64的) { //编码 base64 NSData *data = [NSData dataWithBytes:(const void *)dataOut length:(NSUInteger)dataOutMoved]; result = [GTMBase64 stringByEncodingData:data]; } return result;}//获得路径文件扩展名不带.+(NSString *)getTheSuffixName:(NSString *)path{ NSRange range=[path rangeOfString:@"?"]; if (range.location!=NSNotFound) { path=[path substringToIndex:range.location]; path=[path pathExtension]; return path; } else { path=[path pathExtension]; return path; }}//对字符串进行加密+(NSString *)jiamiString:(NSString *)_str{ //提取token值 NSString *token=[[NSUserDefaults standardUserDefaults]valueForKey:@"token"]; //DLog(@"读取的token值%@",token); //拆分token为key值和向量 NSMutableArray *arrtoken=[DzcDES XiuGaiToken:token]; //DLog(@"拆分后的token值%@",arrtoken); //对字符串进行加密 NSString *uname=[self encryptWithText:_str encryptWithKey:arrtoken[0] encryptWithIv:arrtoken[1]]; return uname; //}}//对字符串进行解密+(NSString *)jiemiString:(NSString *)_str{ //提取token值 NSString *token=[[NSUserDefaults standardUserDefaults]valueForKey:@"token"]; //DLog(@"读取的token值%@",token); //拆分token为key值和向量 NSMutableArray *arrtoken=[DzcDES XiuGaiToken:token]; //DLog(@"拆分后的token值%@",arrtoken); //对加密数据进行解密 NSString *string=[self decryptWithText:_str decryptWithKey:arrtoken[0] decryptWithIv:arrtoken[1]]; string=[self DecodeBase64:string]; return string;}//获取当前手机IP地址+ (NSString *)getIPAddress{ NSString *address = @"error"; struct ifaddrs *interfaces = NULL; struct ifaddrs *temp_addr = NULL; int success = 0; // retrieve the current interfaces - returns 0 on success success = getifaddrs(&interfaces); if (success == 0) { // Loop through linked list of interfaces temp_addr = interfaces; while (temp_addr != NULL) { if( temp_addr->ifa_addr->sa_family == AF_INET) { // Check if interface is en0 which is the wifi connection on the iPhone if ([[NSString stringWithUTF8String:temp_addr->ifa_name] isEqualToString:@"en0"]) { // Get NSString from C String address = [NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)temp_addr->ifa_addr)->sin_addr)]; } else { address = [NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)temp_addr->ifa_addr)->sin_addr)]; } } temp_addr = temp_addr->ifa_next; } } // Free memory freeifaddrs(interfaces); return address;}//获取当前手机标识+(NSString *)getIdentifierStr{ NSString *identifierStr =[[[UIDevice currentDevice] identifierForVendor] UUIDString]; identifierStr = [identifierStr stringByReplacingOccurrencesOfString:@"-" withString:@""]; if (identifierStr ==nil) { UIDevice *device = [UIDevice currentDevice];//创建设备对象 NSUUID *UUID = [device identifierForVendor]; identifierStr = [UUID UUIDString]; identifierStr = [identifierStr stringByReplacingOccurrencesOfString:@"-" withString:@""]; } return identifierStr; /* CFUUIDRef puuid = CFUUIDCreate( nil ); CFStringRef uuidString = CFUUIDCreateString( nil, puuid ); NSString * result = (NSString *)CFBridgingRelease(CFStringCreateCopy( NULL, uuidString)); CFRelease(puuid); CFRelease(uuidString); NSString *indent=[NSString stringWithFormat:@" %@",result]; return indent; */}//将字符串变成字典+ (NSDictionary *)dictionaryWithJsonString:(NSString *)jsonString{ if (jsonString == nil) { return nil; } jsonString=[jsonString stringByReplacingOccurrencesOfString:@"\r" withString:@""]; jsonString=[jsonString stringByReplacingOccurrencesOfString:@"\n" withString:@""]; NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding]; NSError *err; NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&err]; if(err) { DLog(@"json解析失败:%@",err); return nil; } return dic;}//将字符串变成数组对象+(NSArray *)arrayWithJsonString:(NSString *)jsonstring{ if (jsonstring == nil) { return nil; } jsonstring =[jsonstring stringByReplacingOccurrencesOfString:@"\r" withString:@""]; jsonstring=[jsonstring stringByReplacingOccurrencesOfString:@"\n" withString:@""]; NSData *jsonData=[jsonstring dataUsingEncoding:NSUTF8StringEncoding]; NSError *error; NSArray *arr=[NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableLeaves error:&error]; if (error) { DLog(@"json解析失败:%@",error); return nil; } return arr;}//警报+(void)alert:(NSString *)msg{ UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"友情提醒" message:msg delegate:self cancelButtonTitle:@"我知道了" otherButtonTitles:nil, nil]; [alert show];}//剔除字符串两端的空格+(NSString *)trim:(NSString *)_str{ return [_str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];}//汉子转拼音+(NSString *)hanZiToPinYin:(NSString *)_str{ NSMutableString *ms = [[NSMutableString alloc] initWithString:_str]; NSString *str; if (CFStringTransform((__bridge CFMutableStringRef)ms, 0, kCFStringTransformMandarinLatin, NO)) { DLog(@"pinyin: %@", ms); str=[[NSString alloc]initWithFormat:@"%@",ms ]; str=[str stringByReplacingOccurrencesOfString:@" " withString:@""]; } if (CFStringTransform((__bridge CFMutableStringRef)ms, 0, kCFStringTransformStripDiacritics, NO)) { DLog(@"pinyin: %@", ms); str=[[NSString alloc]initWithFormat:@"%@",ms ]; str=[str stringByReplacingOccurrencesOfString:@" " withString:@""]; } return str;}//获取网络类型+(NSString *)networktype{ NSArray *subviews = [[[[UIApplication sharedApplication] valueForKey:@"statusBar"] valueForKey:@"foregroundView"]subviews]; NSNumber *dataNetworkItemView = nil; for (id subview in subviews) { if([subview isKindOfClass:[NSClassFromString(@"UIStatusBarDataNetworkItemView") class]]) { dataNetworkItemView = subview; break; } } switch ([[dataNetworkItemView valueForKey:@"dataNetworkType"]integerValue]) { case 0: //DLog(@"No wifi or cellular"); //infoLabel.text=@"无服务"; return @"无服务"; break; case 1: //DLog(@"2G");// infoLabel.text=@"2G"; return @"2G"; break; case 2: //DLog(@"3G");// infoLabel.text=@"3G"; return @"3G"; break; case 3: //DLog(@"4G");// infoLabel.text=@"4G"; return @"4G"; break; case 4: //DLog(@"LTE");// infoLabel.text=@"LTE"; return @"LTE"; break; case 5: //DLog(@"WIFI");// infoLabel.text=@"Wifi"; return @"WIFI"; break; default: return @"无法识别网络"; break; }}//得到运营商名称+(NSString *)getcarrierName{ CTTelephonyNetworkInfo *telephonyInfo = [[CTTelephonyNetworkInfo alloc] init]; CTCarrier *carrier = [telephonyInfo subscriberCellularProvider]; NSString *currentCountry=[carrier carrierName]; DLog(@"[carrier isoCountryCode]==%@,[carrier allowsVOIP]=%d,[carrier mobileCountryCode=%@,[carrier mobileCountryCode]=%@",[carrier isoCountryCode],[carrier allowsVOIP],[carrier mobileCountryCode],[carrier mobileNetworkCode]); DLog(@"运营商名字%@",currentCountry); return currentCountry;}+(void)getNewUrlPassOldUrl:(NSString *)_oldUrl{ NSURL*url=[NSURL URLWithString:_oldUrl]; NSURLRequest *request=[[NSURLRequest alloc]initWithURL:url]; NSURLConnection *conection=[[NSURLConnection alloc]initWithRequest:request delegate:self startImmediately:YES]; if (conection==nil) { DLog(@"重定向url链接失败"); }}-(NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)response { DLog(@"================================================"); DLog(@"will send request\n%@", [request URL]); DLog(@"redirect response\n%@", [response URL]); if ([request URL]==nil&&[response URL]==nil) { } else { DLog(@"重定向url=%@",[request URL]); //[DZCUiapplication shareApplication].movieurl=[request URL]; } return request;}//得到用户手机操作系统版本+(NSString *)getUserphoneModel{ //手机系统版本 NSString* phoneVersion = [[UIDevice currentDevice] systemVersion]; //DLog(@"手机系统版本: %@", phoneVersion); NSString *phone=[NSString stringWithFormat:@"ios %@",phoneVersion]; return phone;}//获取软件版本+(NSString *)getAppVersion{ NSString *version=[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"]; NSString *ver=[NSString stringWithFormat:@"OS v%@",version]; return ver;}//获取用户手机是苹果几+(NSString *)getUserPhoneVersion{ /* //设备名称 NSString* deviceName = [[UIDevice currentDevice] systemName]; DLog(@"设备名称: %@",deviceName ); //手机系统版本 NSString* phoneVersion = [[UIDevice currentDevice] systemVersion]; DLog(@"手机系统版本: %@", phoneVersion); NSString *str=[[NSString alloc]initWithFormat:@"%@%@",deviceName,phoneVersion ]; return str; */ struct utsname systemInfo; uname(&systemInfo); NSString *deviceString = [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding]; // DLog(@"设备名称%@",deviceString); if ([deviceString isEqualToString:@"iPhone3,1"]) return @"iPhone 4"; if ([deviceString isEqualToString:@"iPhone4,1"]) return @"iPhone 4S"; if ([deviceString isEqualToString:@"iPhone5,2"]) return @"iPhone 5"; if ([deviceString isEqualToString:@"iPhone6,2"]) return @"iPhone 5S"; if ([deviceString isEqualToString:@"iPhone7,1"]) return @"iPhone 6 Plus"; if ([deviceString isEqualToString:@"iPhone7,2"]) return @"iPhone 6"; if ([deviceString isEqualToString:@"iPhone8,1"]) return @"iPhone 6s Plus"; if ([deviceString isEqualToString:@"iPhone8,2"]) return @"iPhone 6 s"; /* if ([deviceString isEqualToString:@"iPod1,1"]) return @"iPod Touch 1G"; if ([deviceString isEqualToString:@"iPod2,1"]) return @"iPod Touch 2G"; if ([deviceString isEqualToString:@"iPod3,1"]) return @"iPod Touch 3G"; if ([deviceString isEqualToString:@"iPod4,1"]) return @"iPod Touch 4G"; if ([deviceString isEqualToString:@"iPad1,1"]) return @"iPad"; if ([deviceString isEqualToString:@"iPad2,1"]) return @"iPad 2 (WiFi)"; if ([deviceString isEqualToString:@"iPad2,2"]) return @"iPad 2 (GSM)"; if ([deviceString isEqualToString:@"iPad2,3"]) return @"iPad 2 (CDMA)"; if ([deviceString isEqualToString:@"iPad3,4"]) return @"iPad 4 (WiFi)"; */ if ([deviceString isEqualToString:@"i386"]) return @"iPhone"; if ([deviceString isEqualToString:@"x86_64"]) return @"iPhone"; //CLog(@"NOTE: Unknown device type: %@", deviceString); else { return @"iPhone"; }}//检测手机剩余内存空间+ (NSString *) freeDiskSpaceInBytes{ struct statfs buf; long long freespace = -1; if(statfs("/var", &buf) >= 0){ freespace = (long long)(buf.f_bsize * buf.f_bfree); } return [NSString stringWithFormat:@"%qi" ,freespace/1024/1024];}//获取缓存文件大小+(long long)fileSizeAtPath:(NSString *)filePath{ NSFileManager *fileManger=[NSFileManager defaultManager]; if ([fileManger fileExistsAtPath:filePath]) { return [[fileManger attributesOfItemAtPath:filePath error:nil]fileSize]; } return 0;}//base64编码后解码+(NSString *)DecodeBase64:(NSString *)_str{ _str=[GTMBase64 decodeBase64String:_str]; return _str;}//base64编码+(NSString *)Base64Code:(NSData *)_data{ NSString *imageString=[_data base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength]; return imageString;}//解析配置数据+(void)handAppconfig;{ /* //处理配置数据 NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *docDir=[paths lastObject]; NSString *fileName=[docDir stringByAppendingPathComponent:@"appconfig.txt"];//[NSTemporaryDirectory() stringByAppendingPathComponent:@"appconfig.data"]; if([[NSFileManager defaultManager]fileExistsAtPath:fileName]) { NSData *_data=[NSData dataWithContentsOfFile:fileName]; NSString *str=[[NSString alloc]initWithData:_data encoding:NSUTF8StringEncoding]; NSDictionary *dict=[DzcDES dictionaryWithJsonString:str]; str=[dict valueForKey:@"data"]; str=[self jiemiString:str]; NSRange range=[str rangeOfString:@"[RP]"]; if (range.location!=NSNotFound) { str=[str stringByReplacingCharactersInRange:NSMakeRange(range.location-1, range.length+1) withString:@""]; } range=[str rangeOfString:@"[RP]"]; if (range.location!=NSNotFound) { str=[str stringByReplacingCharactersInRange:NSMakeRange(range.location, range.length+1) withString:@""]; } dict=[DzcDES dictionaryWithJsonString:str]; DLog(@"%@",dict); DZCAppConfig *dzcappconfig=[DZCAppConfig shareApplication]; dzcappconfig.AppState=[dict valueForKey:@"AppState"]; dzcappconfig.OpenReg=[dict valueForKey:@"OpenReg"]; dzcappconfig.PayList=[dict objectForKey:@"PayList"]; dzcappconfig.RegInstr=[dict valueForKey:@"RegInstr"]; dzcappconfig.VIPInstr=[dict objectForKey:@"VIPInstr"]; dzcappconfig.WeiXin=[dict objectForKey:@"WeiXin"]; dzcappconfig.AD=[dict objectForKey:@"AD"]; dzcappconfig.AppModel=[dict objectForKey:@"AppModel"]; dzcappconfig.Share=[dict objectForKey:@"Share"]; if ([dzcappconfig.AppState isEqualToString:@"1"]) { UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"友情提示" message:@"服务器维护中..." delegate:nil cancelButtonTitle:@"我知道了" otherButtonTitles:nil, nil]; [alert show]; } NSDictionary *navdict=[dict objectForKey:@"VideoListConfig"]; [navdict writeToFile:[docDir stringByAppendingPathComponent:@"videoList.txt"] atomically:YES]; DLog(@"%@",[[NSBundle mainBundle] pathForResource:@"videoList" ofType:@"txt"]); } */}+(NSString *)testUrl:(NSString *)_ImageUrl{ NSRange range=[_ImageUrl rangeOfString:@"http://"]; NSString *imageurl; if (range.location!=NSNotFound) { NSRange rangeone=[_ImageUrl rangeOfString:@".jpg"]; if (rangeone.location!=NSNotFound) { imageurl=[NSString stringWithFormat:@"%@",_ImageUrl]; } if(rangeone.location ==NSNotFound) { imageurl=[NSString stringWithFormat:@"%@.jpg",_ImageUrl]; } } if(range.location ==NSNotFound) { imageurl=[NSString stringWithFormat:@"%@%@",HOST,_ImageUrl]; } return imageurl;}+ (NSArray *)getDataCounters{ BOOL success; struct ifaddrs *addrs; struct ifaddrs *cursor; struct if_data *networkStatisc; long WiFiSent = 0; long WiFiReceived = 0; long WWANSent = 0; long WWANReceived = 0; NSString *name=[[NSString alloc]init]; success = getifaddrs(&addrs) == 0; if (success) { cursor = addrs; while (cursor != NULL) { name=[NSString stringWithFormat:@"%s",cursor->ifa_name]; //NSLog(@"ifa_name %s == %@\n", cursor->ifa_name,name); // names of interfaces: en0 is WiFi ,pdp_ip0 is WWAN if (cursor->ifa_addr->sa_family == AF_LINK) { if ([name hasPrefix:@"en"]) { networkStatisc = (struct if_data *) cursor->ifa_data; WiFiSent+=networkStatisc->ifi_obytes; WiFiReceived+=networkStatisc->ifi_ibytes; //NSLog(@"WiFiSent %d ==%d",WiFiSent,networkStatisc->ifi_obytes); //NSLog(@"WiFiReceived %d ==%d",WiFiReceived,networkStatisc->ifi_ibytes); } if ([name hasPrefix:@"pdp_ip"]) { networkStatisc = (struct if_data *) cursor->ifa_data; WWANSent+=networkStatisc->ifi_obytes; WWANReceived+=networkStatisc->ifi_ibytes; //NSLog(@"WWANSent %d ==%d",WWANSent,networkStatisc->ifi_obytes); //NSLog(@"WWANReceived %d ==%d",WWANReceived,networkStatisc->ifi_ibytes); } } cursor = cursor->ifa_next; } freeifaddrs(addrs); } return [NSArray arrayWithObjects:[NSNumber numberWithInt:WiFiSent/1024/1024], [NSNumber numberWithInt:WiFiReceived/1024/1024],[NSNumber numberWithInt:WWANSent/1024],[NSNumber numberWithInt:WWANReceived/1024], nil];}//获取mac地址+ (NSString *) macaddress{ int mib[6]; size_t len; char *buf; unsigned char *ptr; struct if_msghdr *ifm; struct sockaddr_dl *sdl; mib[0] = CTL_NET; mib[1] = AF_ROUTE; mib[2] = 0; mib[3] = AF_LINK; mib[4] = NET_RT_IFLIST; if ((mib[5] = if_nametoindex("en0")) == 0) { printf("Error: if_nametoindex error/n"); return NULL; } if (sysctl(mib, 6, NULL, &len, NULL, 0) < 0) { printf("Error: sysctl, take 1/n"); return NULL; } if ((buf = malloc(len)) == NULL) { printf("Could not allocate memory. error!/n"); return NULL; } if (sysctl(mib, 6, buf, &len, NULL, 0) < 0) { printf("Error: sysctl, take 2"); return NULL; } ifm = (struct if_msghdr *)buf; sdl = (struct sockaddr_dl *)(ifm + 1); ptr = (unsigned char *)LLADDR(sdl); // NSString *outstring = [NSString stringWithFormat:@"%02x:%02x:%02x:%02x:%02x:%02x", *ptr, *(ptr+1), *(ptr+2), *(ptr+3), *(ptr+4), *(ptr+5)]; NSString *outstring = [NSString stringWithFormat:@"%02x%02x%02x%02x%02x%02x", *ptr, *(ptr+1), *(ptr+2), *(ptr+3), *(ptr+4), *(ptr+5)]; free(buf); return [outstring uppercaseString];}//截取部分图片//截取部分图像+(UIImage*)getSubImage:(UIImage *)img{ UIImageView *imageView=[[UIImageView alloc]initWithImage:img]; imageView.contentMode=UIViewContentModeBottomRight; imageView.clipsToBounds=YES; imageView.frame=CGRectMake(5, 5, 5, 5); return imageView.image;}//按照Fram截取图片+(UIImage*)getSubImage:(UIImage *)image mCGRect:(CGRect)mCGRect centerBool:(BOOL)centerBool{ /*如若centerBool为Yes则是由中心点取mCGRect范围的图片*/ float imgwidth = image.size.width; float imgheight = image.size.height; float viewwidth = mCGRect.size.width; float viewheight = mCGRect.size.height; CGRect rect; if(centerBool) rect = CGRectMake((imgwidth-viewwidth)/2, (imgheight-viewheight)/2, viewwidth, viewheight); else{ if (viewheight < viewwidth) { if (imgwidth <= imgheight) { rect = CGRectMake(0, 0, imgwidth, imgwidth*viewheight/viewwidth); }else { float width = viewwidth*imgheight/viewheight; float x = (imgwidth - width)/2 ; if (x > 0) { rect = CGRectMake(x, 0, width, imgheight); }else { rect = CGRectMake(0, 0, imgwidth, imgwidth*viewheight/viewwidth); } } }else { if (imgwidth <= imgheight) { float height = viewheight*imgwidth/viewwidth; if (height < imgheight) { rect = CGRectMake(0, 0, imgwidth, height); }else { rect = CGRectMake(0, 0, viewwidth*imgheight/viewheight, imgheight); } }else { float width = viewwidth*imgheight/viewheight; if (width < imgwidth) { float x = (imgwidth - width)/2 ; rect = CGRectMake(x, 0, width, imgheight); }else { rect = CGRectMake(0, 0, imgwidth, imgheight); } } } } CGImageRef subImageRef = CGImageCreateWithImageInRect(image.CGImage, rect); CGRect smallBounds = CGRectMake(0, 0, CGImageGetWidth(subImageRef), CGImageGetHeight(subImageRef)); UIGraphicsBeginImageContext(smallBounds.size); CGContextRef context = UIGraphicsGetCurrentContext(); CGContextDrawImage(context, smallBounds, subImageRef); UIImage* smallImage = [UIImage imageWithCGImage:subImageRef]; UIGraphicsEndImageContext(); return smallImage;}//身份证号+ (BOOL) validateIdentityCard: (NSString *)identityCard{ BOOL flag; if (identityCard.length <= 0) { flag = NO; return flag; } NSString *regex2 = @"^(\\d{14}|\\d{17})(\\d|[xX])$"; NSPredicate *identityCardPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex2]; return [identityCardPredicate evaluateWithObject:identityCard];}//解析服务器返回的数据+(id)HandleDataWith:(id )_data andModa:(NSObject *)_objc{ NSString *data=[_data valueForKey:@"data"]; data=[DzcDES jiemiString:data]; NSArray *array=[DzcDES arrayWithJsonString:data]; return [WHC_DataModel dataModelWithArray:array className:[_objc class]];}+ (NSString *)JiamiLocal:(NSString *)str{ //提取token值 NSString *token=@"7C26642A4F204DF48791F8C2B776D046"; //DLog(@"读取的token值%@",token); //拆分token为key值和向量 NSMutableArray *arrtoken=[DzcDES XiuGaiToken:token]; //DLog(@"拆分后的token值%@",arrtoken); //对字符串进行加密 NSString *uname=[self encryptWithText:str encryptWithKey:arrtoken[0] encryptWithIv:arrtoken[1]]; return uname;}+(NSString *)JieMiLocal:(NSString *)str{ //提取token值 NSString *token=@"7C26642A4F204DF48791F8C2B776D046"; //DLog(@"读取的token值%@",token); //拆分token为key值和向量 NSMutableArray *arrtoken=[DzcDES XiuGaiToken:token]; //DLog(@"拆分后的token值%@",arrtoken); //对加密数据进行解密 NSString *string=[self decryptWithText:str decryptWithKey:arrtoken[0] decryptWithIv:arrtoken[1]]; return string;}@end
0 0
- iOS工具类
- ios 定位工具类
- iOS 工具类 SSToolkit
- iOS sqlite 工具类
- ios自定义工具类
- iOS MBProgress工具类
- 工具类IOS应用
- iOS 工具类
- iOS 相机工具类
- iOS scrollerView 滚动 工具类
- IOS获得图片工具类
- ios 基础工具类总结
- 数据请求工具类ios
- ios 工具
- IOS:IOS工具网站
- ios 工具类系列-----图片处理--imageUtil
- iOS 使用工具生成类图
- ios 9大设计类开发工具
- 好多年不做技术了,重拾旧业=创业
- 黑马公社(微信公众号:heimagongshe),一个属于IT爱好者的正能量社群
- JavaScript之正则表达式
- android 分页加载
- 持久化FMDB
- iOS 工具类
- Listview(PullToRefresh ) 下拉刷新,上拉加载
- lintcode ----删除排序数组中的重复数字
- Using Statement vs Try-Finally
- PowerPoint常见问题及对策
- 顺时针打印矩阵
- dwz系列之一--项目引入dwz
- 数据库高可用架构(MySQL、Oracle、MongoDB、Redis)
- Leetcode 101. Symmetric Tree