处理联系人--排序

头文件

//
//  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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值