好友列表&通讯录-英文&拼音排序

最近在整理自己以往写的代码。以前在用环信的时候有个好友列表的功能,当时是使用 pinyin.c 这种把中文首字母排序的方式来排好友列表顺序的。后来看了 ObjectC中国的一篇文章《玩转字符串》,知道了可以把中文转成拼音字符串然后比较的方法。所以在学校筛选时使用了全拼音排序的方法,可是一直没有更改好友列表的排序实现,可能记性真的不好吧!
现在突然想起了这件事,所以就自己模仿写了一个分类简单实现拼音排序 AGSortedMan。

使用比较简单,一开始我想把它作为工具模块来使用而不是分类。因为这样显得有思想。
不过最后还是没找到好思路,毕竟空谈误国,实干兴邦嘛。怎么简单怎么来!这智商~

使用步骤:

1,导入分类头文件 #import "NSArray+PinyinSorte.h" 。
2,让你要排序的模型类实现 AGPinyinSorteProtocol 协议。
3,模型塞入数组,然后调用数组分类方法。
4,返回你想要的数据使用就是了。
  • 需要遵守的协议
@protocol AGPinyinSorteProtocol 
@required // 必须实现
/** 首字母 默认大写 */
@property (nonatomic, copy) NSString *firstLetter;
/** 拼音字母 */
@property (nonatomic, copy) NSString *pinyin;

/** 取出要排序的文字或数字 */
- (NSString *) sortedStr;
@end
  • 模型
@interface AGStudentModel : NSObject
/** firstLetter */
@property (nonatomic, copy) NSString *firstLetter;
/** 拼音字母 */
@property (nonatomic, copy) NSString *pinyin;

@property (nonatomic, copy) NSString *name;
@property (nonatomic, strong) NSNumber *age;
@end

@implementation AGStudentModel
- (NSString *)sortedStr
{
    return _name;
}
@end
  • 使用
- (void)testWithDataSize:(NSInteger)size {

    // 生成数据
    NSString *chineseStr = @"波波维奇罗波斯猫博士啵神伯特科比";
    NSMutableArray *students = [@[] mutableCopy];
    for (int i = 0; i < size; i++) {
        AGStudentModel * sm = [AGStudentModel new];
        NSRange nameRange = NSMakeRange(arc4random_uniform(chineseStr.length - 3), 4);
        sm.name = [chineseStr substringWithRange:nameRange];
        [students addObject:sm];
    }

    // 排序 ( 其实使用就这一句代码 )
    NSArray *arr = [students ag_pinYinSortedArrayList];
}

项目 GitHub地址

你可能感兴趣的:(好友列表&通讯录-英文&拼音排序)