读取手机联系人信息
2019獨角獸企業重金招聘Python工程師標準>>>
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 9.0) {
? ? ? ? CNContactStore *store = [[CNContactStore alloc] init];
? ? ? ? CNContactFetchRequest *request = [[CNContactFetchRequest alloc] initWithKeysToFetch:@[CNContactFamilyNameKey,CNContactGivenNameKey,CNContactPhoneNumbersKey]];
? ? ? ? NSError *error = nil;
//? ? ? ? NSMutableArray *nameArray = [[NSMutableArray alloc] init];
//? ? ? ? NSMutableArray *phoneArray = [[NSMutableArray alloc]init];
? ? ? ? NSMutableArray *ary = [[NSMutableArray alloc]init];
?? ? ? ?
? ? ? ? //執行獲取通訊錄請求,若通訊錄可獲取,flag為YES,代碼塊也會執行,若獲取失敗,flag為NO,代碼塊不執行
? ? ? ? BOOL flag = [store enumerateContactsWithFetchRequest:request error:&error usingBlock:^(CNContact * _Nonnull contact, BOOL * _Nonnull stop) {
? ? ? ? ? ? //去除數字以外的所有字符
? ? ? ? ? ? NSCharacterSet *setToRemove = [[ NSCharacterSet characterSetWithCharactersInString:@"0123456789"]
?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? invertedSet ];
? ? ? ? ? ? NSString *strPhone = @"" ;
? ? ? ? ? ? if (contact.phoneNumbers.count>0) {
? ? ? ? ? ? ? ? strPhone? = [[[contact.phoneNumbers firstObject].value.stringValue componentsSeparatedByCharactersInSet:setToRemove] componentsJoinedByString:@"" ];
? ? ? ? ? ? ? ? NSLog(@"%@",strPhone);
? ? ? ? ? ? }
? ? ? ? ? ? //[phoneArray addObject:strPhone];
? ? ? ? ? ? NSString *name = @"";
? ? ? ? ? ? if ([NSString stringWithFormat:@"%@%@",contact.familyName,contact.givenName]) {
? ? ? ? ? ? ? ? name =? [NSString stringWithFormat:@"%@ %@",contact.familyName,contact.givenName];
? ? ? ? ? ? }
? ? ? ? ? ? NSMutableDictionary *dict = [[NSMutableDictionary alloc]init];
? ? ? ? ? ? [dict setObject:strPhone forKey:@"phoneNum"];
? ? ? ? ? ? [dict setObject:name forKey:@"name"];
? ? ? ? ? ? //[nameArray addObject:name];
? ? ? ? ? ? [ary addObject:dict];
? ? ? ? }];
? ? ? ? if (flag) {
//? ? ? ? ? ? NSLog(@"手機號%@",[phoneArray componentsJoinedByString:@","]);
//? ? ? ? ? ? NSLog(@"名字%@",[nameArray componentsJoinedByString:@","]);
? ? ? ? ? ? NSLog(@"%@",ary);
? ? ? ? }
? ? }else{
? ? ? ? NSMutableArray *nameArray = [[NSMutableArray alloc] init];
? ? ? ? NSMutableArray *phoneArray = [[NSMutableArray alloc]init];
? ? ? ? CFErrorRef *error = nil;
? ? ? ? ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, error);
? ? ? ? __block BOOL accessGranted = NO;
?? ? ? ?
? ? ? ? dispatch_semaphore_t sema = dispatch_semaphore_create(0);
? ? ? ? ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error) {
? ? ? ? ? ? accessGranted = granted;
? ? ? ? ? ? dispatch_semaphore_signal(sema);
? ? ? ? });
? ? ? ? dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);
?? ? ? ?
? ? ? ? if (accessGranted) {
?? ? ? ? ? ?
? ? ? ? ? ? CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople (addressBook);
? ? ? ? ? ? CFIndex nPeople = ABAddressBookGetPersonCount (addressBook);
?? ? ? ? ? ?
?? ? ? ? ? ?
? ? ? ? ? ? for ( NSInteger i = 0 ; i < nPeople; i++)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? ABRecordRef person = CFArrayGetValueAtIndex (allPeople, i);
? ? ? ? ? ? ? ? NSString *givenName = (__bridge NSString *)(ABRecordCopyValue (person, kABPersonFirstNameProperty )) == nil ? @"" : (__bridge NSString *)(ABRecordCopyValue (person, kABPersonFirstNameProperty ));
? ? ? ? ? ? ? ? NSString *familyName = (__bridge NSString *)(ABRecordCopyValue (person, kABPersonLastNameProperty )) == nil ? @"" : (__bridge NSString *)(ABRecordCopyValue (person, kABPersonLastNameProperty ));
? ? ? ? ? ? ? ? ABMultiValueRef phoneNumbers = ABRecordCopyValue(person, kABPersonPhoneProperty);
? ? ? ? ? ? ? ? NSArray *array = CFBridgingRelease(ABMultiValueCopyArrayOfAllValues(phoneNumbers));
? ? ? ? ? ? ? ? NSString *phoneNumber = @"";
? ? ? ? ? ? ? ? if (array.count > 0) {
? ? ? ? ? ? ? ? ? ? phoneNumber = [array firstObject];
? ? ? ? ? ? ? ? }
?? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? NSDictionary *dic = [[NSDictionary alloc] initWithObjectsAndKeys:[NSString stringWithFormat:@"%@%@",familyName,givenName],@"name",phoneNumber,@"phone",[NSNumber numberWithBool:NO],@"isUser",nil];
? ? ? ? ? ? ? ? NSLog(@"%@",dic);
? ? ? ? ? ? ? ? //去除數字以外的所有字符
? ? ? ? ? ? ? ? NSCharacterSet *setToRemove = [[ NSCharacterSet characterSetWithCharactersInString:@"0123456789"]
?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? invertedSet ];
? ? ? ? ? ? ? ? NSString *strPhone = [[phoneNumber componentsSeparatedByCharactersInSet:setToRemove] componentsJoinedByString:@""];
? ? ? ? ? ? ? ? [phoneArray addObject:strPhone];
? ? ? ? ? ? ? ? NSString *name = [NSString stringWithFormat:@"%@%@",familyName,givenName];
? ? ? ? ? ? ? ? [nameArray addObject:name];
? ? ? ? ? ? }
? ? ? ? ? ? NSLog(@"手機號%@",[phoneArray componentsJoinedByString:@","]);
? ? ? ? ? ? NSLog(@"名字%@",[nameArray componentsJoinedByString:@","]);
? ? ? ? }
?? ? ? ?
?? ? ? ?
? ? }
轉載于:https://my.oschina.net/BurningOC/blog/530016
總結
- 上一篇: Scrapy结合Mysql爬取天气预报入
- 下一篇: java 的23种设计模式 之装B者模式