ios 常用公共方法

iOS 中一些常用公共方法,一般在每一个应用程序中都会用到的一些方法,列举一下,有所不足,以后增加

关于时间格式的一些方法:http://blog.csdn.net/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;

}




猜你喜欢

转载自blog.csdn.net/u014305730/article/details/51781185