通訊錄處理

/**

獲取通訊錄

**/
-(void)getAddressBookList{
NSMutableArray *array = [NSMutableArray array];//接受所有的人信息
ABAddressBookRef book = ABAddressBookCreateWithOptions(NULL, NULL);
//請(qǐng)求通訊錄權(quán)限
ABAddressBookRequestAccessWithCompletion(book, ^(bool granted, CFErrorRef error) {
//把所有的聯(lián)系人復(fù)制到數(shù)組中
NSArray *peopleArray = (__bridge NSArray *)ABAddressBookCopyArrayOfAllPeople(book);

    for (int i = 0; i < peopleArray.count; i++) {
        ContactsModel *model = [[ContactsModel alloc]init];//每個(gè)人數(shù)據(jù)模型
        ABRecordRef person = (__bridge ABRecordRef)([peopleArray objectAtIndex:i]);
        //獲得名字
        NSString *name = (__bridge NSString *)ABRecordCopyCompositeName(person);
        model.name = name;
        if (name) {
            //獲得電話號(hào)碼
            ABMultiValueRef tmpPhones = ABRecordCopyValue(person, kABPersonPhoneProperty);
            if (tmpPhones!=nil&&(__bridge NSObject*)tmpPhones!=[NSNull null]) {
                NSMutableArray *phoneArray = [NSMutableArray array];
                for(NSInteger j = 0; j < ABMultiValueGetCount(tmpPhones); j++){
                    
                    NSString *tmpPhoneIndex = (__bridge NSString*)ABMultiValueCopyValueAtIndex(tmpPhones, j);
                    
                    NSString *phone = [self formatPhoneNum:tmpPhoneIndex];
                    [phoneArray addObject:phone];//添加多個(gè)號(hào)碼

// ABMultiValueRef ref = ABRecordCopyValue(person, kABPersonPhoneProperty);
// //獲得昵稱
// NSString* tmpNickname = (__bridge NSString)ABRecordCopyValue(person, kABPersonNicknameProperty);
// //獲取的聯(lián)系人單一屬性:公司名字
// NSString
tmpCompanyname = (__bridge NSString)ABRecordCopyValue(person, kABPersonOrganizationProperty);
// //獲取的聯(lián)系人單一屬性:郵箱
// NSString
tmpEmail = (__bridge NSString*)ABMultiValueCopyValueAtIndex(ref, 0);

                }
                model.phonesArray = phoneArray;
            }
        }
        [array addObject:model];
    }
    //處理數(shù)據(jù)  數(shù)組裝載模型
    
    [self handleContactsDataWithAddressBookList:array];
});

}
//將通訊錄分組裝進(jìn)字典處理展示

  • (void)handleContactsDataWithAddressBookList:(NSMutableArray *)ContactModels{//分組裝進(jìn)字典

    NSMutableDictionary *allDataDic = [NSMutableDictionary dictionary];
    NSMutableArray *array = [NSMutableArray arrayWithArray:ContactModels];

    for (int i = 0; i < array.count; i ++) {

     ContactsModel *model = array[i];
      NSMutableString *key =(NSMutableString *)[[[self changeToPinYinWithString:model.name] substringToIndex:1] uppercaseString];//取首字母大寫
    
      NSMutableArray *tempArray = [@[] mutableCopy];
      [tempArray addObject:model];
      
      for (int j = i+1; j < array.count; j ++) {
          
          ContactsModel *model2 = array[j];
          NSMutableString *key2 = (NSMutableString *)[[[self changeToPinYinWithString:model2.name] substringToIndex:1] uppercaseString];//取首字母大寫
    
          if([key2 isEqualToString:key]){//將首字母相同的加載到同一個(gè)數(shù)組
              [tempArray addObject:model2];
              [array removeObjectAtIndex:j];
              j=j-1;
          }
      }
      [allDataDic setObject:tempArray forKey:key];
    

    }

}
//將傳過來的字符串轉(zhuǎn)成拼音

  • (NSMutableString *)changeToPinYinWithString:(NSString *)str{
    NSMutableString *tempStr = [[NSMutableString alloc]init];
    if (str) {
    NSMutableString *ms = [[NSMutableString alloc] initWithString:str];
    if (CFStringTransform((__bridge CFMutableStringRef)ms, 0, kCFStringTransformMandarinLatin, NO)) {
    // NSLog(@"pinyin: %@", ms);//帶音調(diào)的轉(zhuǎn)拼音
    }
    if (CFStringTransform((__bridge CFMutableStringRef)ms, 0, kCFStringTransformStripDiacritics, NO)) {
    // NSLog(@"pinyin: %@", ms);//轉(zhuǎn)拼音
    tempStr = (NSMutableString *)ms;
    }
    }
    return tempStr;
    }
    //對(duì)通訊錄取出的號(hào)碼進(jìn)行處理

  • (NSString *)formatPhoneNum:(NSString *)phone
    {

    if ([phone hasPrefix:@"86"]) {

      NSString *formatStr = [phone substringWithRange:NSMakeRange(2, [phone length]-2)];
      return formatStr;
    

    } else if ([phone hasPrefix:@"+86"]){

      NSString *formatStr = [phone substringWithRange:NSMakeRange(4, [phone length]-4)];
      return formatStr;
    

    } else if ([phone hasPrefix:@"00 86"]){

      NSString *formatStr = [phone substringWithRange:NSMakeRange(6, [phone length]-6)];
      return formatStr;
    

    }

      if ([phone contains:@"-"]) {
          phone = [phone stringByReplacingOccurrencesOfString:@"-" withString:@""];
      }
    
      if ([phone contains:@" "]) {
          phone = [phone stringByReplacingOccurrencesOfString:@" " withString:@""];
      }
    

    return phone;
    }

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末董虱,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌带膀,老刑警劉巖奖慌,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件永乌,死亡現(xiàn)場(chǎng)離奇詭異储玫,居然都是意外死亡澎羞,警方通過查閱死者的電腦和手機(jī)顿膨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門锅锨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人恋沃,你說我怎么就攤上這事必搞。” “怎么了囊咏?”我有些...
    開封第一講書人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵恕洲,是天一觀的道長。 經(jīng)常有香客問我匆笤,道長研侣,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任炮捧,我火速辦了婚禮庶诡,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘咆课。我一直安慰自己末誓,他們只是感情好扯俱,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著喇澡,像睡著了一般迅栅。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上晴玖,一...
    開封第一講書人閱讀 49,749評(píng)論 1 289
  • 那天读存,我揣著相機(jī)與錄音,去河邊找鬼呕屎。 笑死让簿,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的秀睛。 我是一名探鬼主播尔当,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼蹂安!你這毒婦竟也來了椭迎?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤田盈,失蹤者是張志新(化名)和其女友劉穎畜号,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體缠黍,經(jīng)...
    沈念sama閱讀 44,110評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡弄兜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了瓷式。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡语泽,死狀恐怖贸典,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情踱卵,我是刑警寧澤廊驼,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站惋砂,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏西饵。R本人自食惡果不足惜酝掩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望眷柔。 院中可真熱鬧期虾,春花似錦原朝、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至茂蚓,卻和暖如春壕鹉,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背聋涨。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來泰國打工晾浴, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人牛郑。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓怠肋,卻偏偏與公主長得像,于是被迫代替她去往敵國和親淹朋。 傳聞我的和親對(duì)象是個(gè)殘疾皇子笙各,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容