IOS-A-Z通讯录

介绍步骤

1需要创建NSArray数组A(用于排序)和NSMutableArray数组B(用于数据处理)

2从服务器获取带有名字的字典,字典转模型 模型转可变数组 目的是把获取的数据通过模型的方式存储

3处理可变数组(无序-->有序)遍历可变数组里的每个模型,取出名字,汉字转拼音,得到有序字典

4根据升降排序比较字典里的每个元素(之前已转成拼音的)

上代码

1 创建数组

self.addressBookArray= [NSMutableArray array];

self.dataArray= [[NSArray array];

2 字典转模型 模型转存于可变数组


AddressBookModel*model = [AddressBookModel mj_objectWithKeyValues:dict];

[self.addressBookArray addObject:model];

}

3 处理可变数组


NSMutableDictionary*dict = [NSMutableDictionarydictionary];

//遍历

for(AddressBookModel*modelinstrArray) {

//取出名字

NSString*nicknameStr = [NSStringstringWithFormat:@"%@", model.nickname];

HCLog(@"nicknameStr%@",nicknameStr);

if([nicknameStrlength]) {

NSMutableString*mutableStr = [[NSMutableStringalloc]initWithString:nicknameStr];

//汉字转拼音 因为我们是根据A-Z排序

if(CFStringTransform((__bridgeCFMutableStringRef)mutableStr,0,kCFStringTransformMandarinLatin,NO)) {

}

if(CFStringTransform((__bridgeCFMutableStringRef)mutableStr,0,kCFStringTransformStripDiacritics,NO)) {

NSString*str= [NSStringstringWithString:mutableStr];

str= [struppercaseString];

NSMutableArray*subArray = [dictobjectForKey:[strsubstringToIndex:1]];

if(!subArray) {

subArray = [NSMutableArrayarray];

//写入字典

[dictsetObject:subArrayforKey:[strsubstringToIndex:1]];}

[subArrayaddObject:model];}}}

return dict;

}

4 数组A的排序


NSString*letter1 = obj1;

NSString*letter2 = obj2;

if(NSSTRING_ISEMPTY(letter2)) {//降

return NSOrderedDescending;

}else if([letter1 characterAtIndex:0] < [letter2 characterAtIndex:0]) {//升

return NSOrderedAscending;}

return NSOrderedDescending;}];

至此 打印出来的_dataArray就是A-Z排序的 步骤3里返回值dict就是每一个字母内所有的名字了(如 A:A1,A2)

你可能感兴趣的:(IOS-A-Z通讯录)