头文件
//
// ContactDataHelper.h
// WeChatContacts-demo
// 联系人处理
// Created by tan on 16/3/12.
// Copyright © 2016年 com.joinup(Nanjing). All rights reserved.
//
#import <Foundation/Foundation.h>
@interface ContactDataHelper : NSObject
/**
获取按照拼音排序后的联系人数组
@param array 未排序联系人数组
@return 排序后的联系人数组
*/
+ (NSMutableArray *)getFriendListDataBy:(NSMutableArray *)array;
/**
根据分区字母获取联系人数组
@param array 未分区联系人数组
@return 分区后得到的联系人数组
*/
+ (NSMutableArray *)getFriendListSectionBy:(NSMutableArray *)array;
@end
.m
//
// ContactDataHelper.m
// WeChatContacts-demo
// 联系人处理
// Created by tan on 16/3/12.
// Copyright © 2016年 com.joinup(Nanjing). All rights reserved.
//
#import "ContactDataHelper.h"
#import "ContactModel.h"
#import "NSString+Pinyin.h"
#import "ECGPatientModel.h"
#import "Public.h"
@implementation ContactDataHelper
/**
获取按照拼音排序后的联系人数组
@param array 未排序联系人数组
@return 排序后的联系人数组
*/
+ (NSMutableArray *) getFriendListDataBy:(NSMutableArray *)array {
NSMutableArray *ans = [[NSMutableArray alloc] init];
NSArray *serializeArray = [(NSArray *)array sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {//排序
int i;
NSString *strA = ((ECGPatientModel *)obj1).pinyin;
NSString *strB= ((ECGPatientModel *)obj2).pinyin;
for (i = 0; i < strA.length && i < strB.length; i ++) {
char a = [strA characterAtIndex:i];
char b = [strB characterAtIndex:i];
if (a > b) {
return (NSComparisonResult)NSOrderedDescending;//上升
}
else if (a < b) {
return (NSComparisonResult)NSOrderedAscending;//下降
}
}
if (strA.length > strB.length) {
return (NSComparisonResult)NSOrderedDescending;
}else if (strA.length < strB.length){
return (NSComparisonResult)NSOrderedAscending;
}else{
return (NSComparisonResult)NSOrderedSame;
}
}];
char lastC = '1';
NSMutableArray *data;
NSMutableArray *oth = [[NSMutableArray alloc] init];
for (ECGPatientModel *user in serializeArray) {
char c;
if ([Public isNull:user.remark]) {
c = [user.realName.pinyin characterAtIndex:0];
}else {
c =[user.remark.pinyin characterAtIndex:0];
}
if (!isalpha(c)) {
[oth addObject:user];
}
else if (c != lastC){
lastC = c;
if (data && data.count > 0) {
[ans addObject:data];
}
data = [[NSMutableArray alloc] init];
[data addObject:user];
}
else {
[data addObject:user];
}
}
if (data && data.count > 0) {
[ans addObject:data];
}
if (oth.count > 0) {
[ans addObject:oth];
}
return ans;
}
/**
根据分区字母获取联系人数组
@param array 未分区联系人数组
@return 分区后得到的联系人数组
*/
+ (NSMutableArray *)getFriendListSectionBy:(NSMutableArray *)array {
NSMutableArray *section = [[NSMutableArray alloc] init];
[section addObject:@"↑ "];
for (NSArray *item in array) {
ECGPatientModel *user = [item objectAtIndex:0];
char c;
if ([Public isNull:user.remark]) {
c = [user.realName.pinyin characterAtIndex:0];
}else{
c = [user.remark.pinyin characterAtIndex:0];
}
if (!isalpha(c)) {
c = '#';
}
[section addObject:[NSString stringWithFormat:@"%c", toupper(c)]];
}
return section;
}
@end