iOS常用的公共方法详解

2020-01-18 19:03:31于海丽

1. 获取磁盘总空间大小


//磁盘总空间
+ (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;
}

2. 获取磁盘可用空间大小


//磁盘可用空间
+ (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;
}

3. 获取指定路径下某个文件的大小


//获取文件大小
+ (long long)fileSizeAtPath:(NSString *)filePath{
 NSFileManager *fileManager = [NSFileManager defaultManager];
 if (![fileManager fileExistsAtPath:filePath]) return 0;
 return [[fileManager attributesOfItemAtPath:filePath error:nil] fileSize];
}

4. 获取文件夹下所有文件的大小


//获取文件夹下所有文件的大小
+ (long long)folderSizeAtPath:(NSString *)folderPath{
 NSFileManager *fileManager = [NSFileManager defaultManager];
 if (![fileManager fileExistsAtPath:folderPath]) return 0;
 NSEnumerator *filesEnumerator = [[fileManager subpathsAtPath:folderPath] objectEnumerator];
 NSString *fileName;
 long long folerSize = 0;
 while ((fileName = [filesEnumerator nextObject]) != nil) {
 NSString *filePath = [folderPath stringByAppendingPathComponent:fileName];
 folerSize += [self fileSizeAtPath:filePath];
 }
 return folerSize;
}

5. 获取字符串(或汉字)首字母


//获取字符串(或汉字)首字母
+ (NSString *)firstCharacterWithString:(NSString *)string{
 NSMutableString *str = [NSMutableString stringWithString:string];
 CFStringTransform((CFMutableStringRef)str, NULL, kCFStringTransformMandarinLatin, NO);
 CFStringTransform((CFMutableStringRef)str, NULL, kCFStringTransformStripDiacritics, NO);
 NSString *pingyin = [str capitalizedString];
 return [pingyin substringToIndex:1];
}

6. 将字符串数组按照元素首字母顺序进行排序分组


//将字符串数组按照元素首字母顺序进行排序分组
+ (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 *)firstCharacterWithString:(NSString *)string{
 NSMutableString *str = [NSMutableString stringWithString:string];
 CFStringTransform((CFMutableStringRef)str, NULL, kCFStringTransformMandarinLatin, NO);
 CFStringTransform((CFMutableStringRef)str, NULL, kCFStringTransformStripDiacritics, NO);
 NSString *pingyin = [str capitalizedString];
 return [pingyin substringToIndex:1];
}