想要将手机中的联系人全部取出,并且按照联系人姓名首字母进行排序:
@property (strong, nonatomic) NSArray * contactList;
@property (strong, nonatomic) NSMutableArray * keys;
- (NSMutableDictionary *) compareByLetters
{
[self initWithContacts];//获取手机中的联系人信息,存放到contactList中。
NSMutableDictionary * letterDic = [[NSMutableDictionary alloc]init];
NSMutableArray * others = [[NSMutableArray alloc]init];
for (int letterIndex = 0;letterIndex < 26 ; letterIndex ++) {
NSMutableArray * arrayTmpByLetter = [[NSMutableArray alloc]init];
char currentLetter = ('A' + letterIndex);
for (int index = 0; index < [_contactList count]; index ++) {
ContactClass * contact = _contactList[index];
NSString * name = contact.contactName;
char letter = '\0';
if (name.length > 0) {
name = [name uppercaseString];
name = [name substringToIndex:1];
strcpy(&letter, (char *)[name UTF8String]);
if (letter == currentLetter) {
[arrayTmpByLetter addObject:contact];
}
}
}
if ([arrayTmpByLetter count] > 0) {
NSString * letterString = [NSString stringWithFormat:@"%c",currentLetter];
[_keys addObject:letterString];
NSDictionary * dic = [NSDictionary dictionaryWithObjectsAndKeys:arrayTmpByLetter, letterString,nil];
[letterDic addEntriesFromDictionary:dic];
}
}
for (int index = 0; index < [_contactList count]; index ++) {
ContactClass * contact = _contactList[index];
NSString * name = contact.contactName;
char letter = '\0';
if (name.length > 0) {
name = [name uppercaseString];
name = [name substringToIndex:1];
strcpy(&letter, (char *)[name UTF8String]);
if (letter < 'A' || letter > 'Z') {
[others addObject:contact];
}
}
}
if ([others count] > 0) {
NSString * letterString = @"#";
[_keys addObject:letterString];
NSDictionary * dic = [NSDictionary dictionaryWithObjectsAndKeys:others, letterString,nil];
[letterDic addEntriesFromDictionary:dic];
}
return letterDic;
}
备份