iOS 中一些常用公共方法,一般在每一个应用程序中都会用到的一些方法,列举一下,有所不足,以后增加
关于时间格式的一些方法:http://blog.youkuaiyun.com/u014305730/article/details/50761757
/**
* 磁盘总空间
*/
+ (CGFloat)diskOfAllSizeMBytes {
CGFloat size = 0.0;
NSError *error;
NSDictionary *dic = [[NSFileManager defaultManager] attributesOfFileSystemForPath:NSHomeDirectory() error:&error];
if (error) {
#ifdef DEBUG
NSLog(@"error:%@",error.localizedDescription);
#endif
} else {
NSNumber *number = [dic objectForKey:NSFileSystemSize];
size = [number floatValue]/1024/1024;
}
return size;
}
/**
* 磁盘可用空间
*/
+ (CGFloat)diskOfFreeSizeMBytes {
CGFloat size = 0.0;
NSError *error;
NSDictionary *dic = [[NSFileManager defaultManager] attributesOfFileSystemForPath:NSHomeDirectory() error:&error];
if (error) {
#ifdef DEBUG
NSLog(@"error:%@",error.localizedDescription);
#endif
} else {
NSNumber *number = [dic objectForKey:NSFileSystemFreeSize];
size = [number floatValue]/1024/1024;
}
return size;
}
/**
* 获取指定路径下某个文件的大小
*/
+ (long long)fileSizeAtPath:(NSString *)filePath {
NSFileManager *manager = [NSFileManager defaultManager];
if (![manager fileExistsAtPath:filePath]) return 0;
return [[manager attributesOfItemAtPath:filePath error:nil] fileSize];
}
/**
* 获取文件夹下所有文件的大小
*/
+ (long long)folderSizeAtPath:(NSString *)folderPath {
NSFileManager *manager = [NSFileManager defaultManager];
if (![manager fileExistsAtPath:folderPath]) return 0;
NSEnumerator *filesEnumerator = [[manager subpathsAtPath:folderPath] objectEnumerator];
NSString *fileName;
long long folderSize = 0;
while ((fileName = [filesEnumerator nextObject]) != nil) {
NSString *filePath = [folderPath stringByAppendingPathComponent:fileName];
folderSize += [self fileSizeAtPath:filePath];
}
return folderSize;
}
/**
* 获取字符串(或汉字)首字母
*/
+ (NSString *)firstCharacterWithString:(NSString *)string {
NSMutableString *str = [NSMutableString stringWithString:string];
CFStringTransform((CFMutableStringRef)str, NULL, kCFStringTransformStripDiacritics, NO);
NSString *pingyin = [str capitalizedString];
return [pingyin substringToIndex:1];
}
/**
* 将字符串数组按照元素首字母顺序进行排序分组
*/
+ (NSDictionary *)dictionaryOrderByCharacterWithOriginalArray:(NSArray *)array {
if (array.count == 0) {
return nil;
}
for (id obj in array) {
if (![obj isKindOfClass:[NSString class]]) {
return nil;
}
}
UILocalizedIndexedCollation *indexedCollation = [UILocalizedIndexedCollation currentCollation];
NSMutableArray *objects = [NSMutableArray arrayWithCapacity:indexedCollation.sectionTitles.count];
// 创建27个分组数组
for (int i = 0; i < indexedCollation.sectionTitles.count; i ++) {
NSMutableArray *obj = [NSMutableArray array];
[objects addObject:obj];
}
NSMutableArray *keys = [NSMutableArray arrayWithCapacity:objects.count];
// 按字母顺序进行分组
NSInteger lastIndex = -1;
for (int i = 0; i < array.count; i++) {
NSInteger index = [indexedCollation sectionForObject:array[i] collationStringSelector:@selector(uppercaseString)];
[[objects objectAtIndex:index] addObject:array[i]];
lastIndex = index;
}
// 去掉空数组
for (int i = 0 ; i < objects.count; i++) {
NSMutableArray *obj = objects[i];
if (obj.count == 0) {
[objects removeObject:obj];
}
}
// 获取索引字母
for (NSMutableArray *obj in objects) {
NSString *str = obj[0];
NSString *key = [self firstCharacterWithString:str];
[keys addObject:key];
}
NSMutableDictionary *dic = [NSMutableDictionary dictionary];
[dic setObject:objects forKey:keys];
return dic;
}
/**
* 获取当前时间
*/
+ (NSString *)currentDateWithFormat:(NSString *)format {
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:format];
return [dateFormatter stringFromDate:[NSDate date]];
}
/**
* 判断手机号码格式是否正确
*/
+ (BOOL)valiMobile:(NSString *)mobile {
mobile = [mobile stringByReplacingOccurrencesOfString:@"" withString:@""];
if (mobile.length != 11) {
return NO;
}else {
/**
* 移动号码正则表达式
*/
NSString *CM_NUM = @"^((13[4-9])|(147)|(15[0-2,7-9])|(178)|(18[2-4,7-8]))//d{8}|(1705)//d{7}$";
/**
* 联通号码正则表达式
*/
NSString *CU_NUM = @"^((13[0-2])|(145)|(15[5-6])|(176)|(18[5,6]))//d{8}|(1709)//d{7}$";
/**
* 电信号码正则表达式
*/
NSString *CT_NUM = @"^((133)|(153)|(177)|(18[0,1,9]))//d{8}$";
NSPredicate *pred1 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CM_NUM];
BOOL isMatch1 = [pred1 evaluateWithObject:mobile];
NSPredicate *pred2 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CU_NUM];
BOOL isMatch2 = [pred2 evaluateWithObject:mobile];
NSPredicate *pred3 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CT_NUM];
BOOL isMatch3 = [pred3 evaluateWithObject:mobile];
if (isMatch1 || isMatch2 || isMatch3) {
return YES;
}else {
return NO;
}
}
}
/**
* 判断邮箱格式是否正确
*/
+ (BOOL)valiEmail:(NSString *)email {
NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
return [emailTest evaluateWithObject:email];
}
/**
*
*/
+ (UIColor *)colorWithHexString:(NSString *)color {
return [PublicMethods colorWithHexString:color alpha:1.0];
}
+ (UIColor *)colorWithHexString:(NSString *)color alpha:(float)opacity {
NSString *string = [[color stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] uppercaseString];
if ([string length] < 6) {
return [UIColor clearColor];
}
if ([string hasPrefix:@"0X"]) {
string = [string substringFromIndex:2];
}
if ([string hasPrefix:@"#"]) {
string = [string substringFromIndex:1];
}
if ([string length] != 6 ) {
return [UIColor clearColor];
}
NSRange range;
range.location = 0;
range.length = 2;
// r
NSString *rString = [string substringWithRange:range];
// g
range.location = 2;
NSString *gString = [string substringWithRange:range];
// b
range.location = 4;
NSString *bString = [string substringWithRange:range];
unsigned int r,g,b;
[[NSScanner scannerWithString:rString]scanHexInt:&r];
[[NSScanner scannerWithString:gString]scanHexInt:&g];
[[NSScanner scannerWithString:bString]scanHexInt:&b];
return [UIColor colorWithRed:((float)r/255.0) green:((float)g/255.0) blue:((float)b/255.0) alpha:opacity];
}
/**
* 判断字符串中是否含有空格
*/
+ (BOOL)haveSpaceInString:(NSString *)string {
NSRange range = [string rangeOfString:@" "];
if (range.location != NSNotFound) {
return YES;
} else {
return NO;
}
}
/**
* 判断字符串中是否含有某个字符串
*/
+ (BOOL)haveString:(NSString *)string1 InString:(NSString *)string2 {
NSRange range = [string2 rangeOfString:string1];
if (range.location != NSNotFound) {
return YES;
} else {
return NO;
}
}
/**
* 判断字符串中是否含有中文
*/
+ (BOOL)haveChineseInString:(NSString *)string {
for (NSInteger i = 0 ; i < [string length]; i ++) {
int a = [string characterAtIndex:i];
if ( a > 0x4e00 && a < 0x9fff) {
return YES;
}
}
return NO;
}
/**
* 判断字符串是否全部为数字
*/
+ (BOOL)allNum:(NSString *)string {
unichar c;
for (int i = 0; i < string.length; i ++) {
c = [string characterAtIndex:i];
if (!isdigit(c)) {
return NO;
}
}
return YES;
}