通讯录:将数组中的model根据名字排序
来源:互联网 发布:淘宝店面装修尺寸 编辑:程序博客网 时间:2024/06/12 01:09
- (NSMutableArray *)fenZuWith:(NSArray *)arr {
// HomeExpertOrWiseModel
NSMutableArray *mArray = [NSMutableArray array];
for (NSInteger i = 0; i != 27; i ++) {
NSMutableArray *arrayItem = [NSMutableArray array];
[mArray addObject:arrayItem];
}
for (EnterpriseAddressListModel *model in arr ) {
NSString *key = model.USER_NAME;
unichar c = [key characterAtIndex:0];
if (c >=0x4E00 && c <=0x9FFF)
{
printf("汉字");
key = [self transform:key];
}
else
{
printf("英文");
}
unichar c1 = [key characterAtIndex:0];
if (c1 >= 65 && c1 <= 90) {
NSMutableArray *item = mArray[c1 - 64];
[item addObject:model];
} else if (c1 >= 97 && c1 <= 122) {
NSMutableArray *item = mArray[c1 - 96];
[item addObject:model];
} else {
NSMutableArray *item = mArray[0];
[item addObject:model];
}
}
for (NSInteger i = mArray.count - 1; i >= 0; i --) {
NSMutableArray *item = mArray[i];
if (item.count == 0) {
[mArray removeObjectAtIndex:i];
}
}
return mArray;
}
- (NSString *)transform:(NSString *)chinese
{
NSMutableString *pinyin = [chinese mutableCopy];
CFStringTransform((__bridge CFMutableStringRef)pinyin, NULL, kCFStringTransformMandarinLatin, NO);
CFStringTransform((__bridge CFMutableStringRef)pinyin, NULL, kCFStringTransformStripCombiningMarks, NO);
NSLog(@"%@", pinyin);
return [pinyin uppercaseString];
}
- (NSMutableArray *)paiXunWith:(NSMutableArray *)arr {
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"USER_NAME" ascending:YES];//其中,price为数组中的对象的属性,这个针对数组中存放对象比较更简洁方便
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[arr sortUsingDescriptors:sortDescriptors];
return arr;
}
- (NSMutableArray *)getIndexArrayWith:(NSMutableArray <NSMutableArray *>*)arr {
NSMutableArray *indexArr = [NSMutableArray array];
for (NSInteger i = 0; i != arr.count ; i ++) {
EnterpriseAddressListModel *model = [arr[i] firstObject];
NSString *key = model.USER_NAME;
unichar c = [key characterAtIndex:0];
if (c >=0x4E00 && c <=0x9FFF)
{
printf("汉字");
key = [self transform:key];
}
else
{
printf("英文");
}
unichar c1 = [key characterAtIndex:0];
if (c1 >= 65 && c1 <= 90) {
c1 = c1 + 32;
} else if (c1 >= 97 && c1 <= 122) {
} else {
c1 = '#';
}
NSString *indexStr = [NSString stringWithFormat:@"%C",c1];
[indexArr addObject:indexStr];
}
return indexArr;
}
// HomeExpertOrWiseModel
NSMutableArray *mArray = [NSMutableArray array];
for (NSInteger i = 0; i != 27; i ++) {
NSMutableArray *arrayItem = [NSMutableArray array];
[mArray addObject:arrayItem];
}
for (EnterpriseAddressListModel *model in arr ) {
NSString *key = model.USER_NAME;
unichar c = [key characterAtIndex:0];
if (c >=0x4E00 && c <=0x9FFF)
{
printf("汉字");
key = [self transform:key];
}
else
{
printf("英文");
}
unichar c1 = [key characterAtIndex:0];
if (c1 >= 65 && c1 <= 90) {
NSMutableArray *item = mArray[c1 - 64];
[item addObject:model];
} else if (c1 >= 97 && c1 <= 122) {
NSMutableArray *item = mArray[c1 - 96];
[item addObject:model];
} else {
NSMutableArray *item = mArray[0];
[item addObject:model];
}
}
for (NSInteger i = mArray.count - 1; i >= 0; i --) {
NSMutableArray *item = mArray[i];
if (item.count == 0) {
[mArray removeObjectAtIndex:i];
}
}
return mArray;
}
- (NSString *)transform:(NSString *)chinese
{
NSMutableString *pinyin = [chinese mutableCopy];
CFStringTransform((__bridge CFMutableStringRef)pinyin, NULL, kCFStringTransformMandarinLatin, NO);
CFStringTransform((__bridge CFMutableStringRef)pinyin, NULL, kCFStringTransformStripCombiningMarks, NO);
NSLog(@"%@", pinyin);
return [pinyin uppercaseString];
}
- (NSMutableArray *)paiXunWith:(NSMutableArray *)arr {
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"USER_NAME" ascending:YES];//其中,price为数组中的对象的属性,这个针对数组中存放对象比较更简洁方便
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[arr sortUsingDescriptors:sortDescriptors];
return arr;
}
- (NSMutableArray *)getIndexArrayWith:(NSMutableArray <NSMutableArray *>*)arr {
NSMutableArray *indexArr = [NSMutableArray array];
for (NSInteger i = 0; i != arr.count ; i ++) {
EnterpriseAddressListModel *model = [arr[i] firstObject];
NSString *key = model.USER_NAME;
unichar c = [key characterAtIndex:0];
if (c >=0x4E00 && c <=0x9FFF)
{
printf("汉字");
key = [self transform:key];
}
else
{
printf("英文");
}
unichar c1 = [key characterAtIndex:0];
if (c1 >= 65 && c1 <= 90) {
c1 = c1 + 32;
} else if (c1 >= 97 && c1 <= 122) {
} else {
c1 = '#';
}
NSString *indexStr = [NSString stringWithFormat:@"%C",c1];
[indexArr addObject:indexStr];
}
return indexArr;
}
0 0
- 通讯录:将数组中的model根据名字排序
- 获取model中的所有属性的名字用数组返回
- 根据中文名字排序
- 对结构体数组进行冒泡排序(根据名字大小)
- PHP排序函数-根据指定字段将数组排序
- 根据某一属性对数组中的对象进行排序
- 数组中的文件根据创建时间进行排序
- iOS根据日期、数值给model排序
- 1、将数组中的元素再定义为特殊的名字方便程序中使用
- 将列表按字母排序如通讯录
- 利用第三方框架获取通讯录(AddressBook),以及以名字对通讯录进行排序
- thinkphp将名字按首字母进行排序
- 游戏Algorithm----数组重排:将数组中的元素,根据值放到与坐标相等的位置
- 数组排序:给定一个数组,将数组中的元素从小到大排序
- 如何将excel中的通讯录导入outlook2010
- 二维数组根据汉字排序
- 数组根据一个字段排序
- 将数组中的字符按出现次数多少排序输出
- iOS 开发中的细节知识点之UILabel篇
- 【Consul】Consul实践指导-配置文件
- Redis 3.2.3 安装和启动
- VMware 12 Pro虚拟机安装Ubuntu 16操作系统,选择创建新的虚拟机操作后无反应
- Linxu系统下MySQL常见操作命令详细解读
- 通讯录:将数组中的model根据名字排序
- 中小学理科试验仿真软件
- Android 中 ListView的使用及优化
- 关于hibernate的查询,更新,需要先查询的问题
- 在WildFly中运行多个standalone模式的实例
- 基于WAMP的Crossbario 安装入门
- Doxygen&Graphviz构建源码组态档
- 指针学习笔记1
- ubuntu下cacti安装配置