iOS 访问通讯录
来源:互联网 发布:cms内容管理系统 选择 编辑:程序博客网 时间:2024/05/31 18:48
-(NSArray *)phone
{
if ([[[UIDevicecurrentDevice] systemVersion]floatValue] >= 9.0) {
CNContactStore *store = [[CNContactStorealloc] init];
CNContactFetchRequest *request = [[CNContactFetchRequestalloc] initWithKeysToFetch:@[CNContactFamilyNameKey,CNContactGivenNameKey,CNContactPhoneNumbersKey]];
NSError *error =nil;
//执行获取通讯录请求,若通讯录可获取,flag为YES,代码块也会执行,若获取失败,flag为NO,代码块不执行
BOOL flag = [storeenumerateContactsWithFetchRequest:requesterror:&error usingBlock:^(CNContact *_Nonnull contact, BOOL *_Nonnull stop) {
//去除数字以外的所有字符
NSCharacterSet *setToRemove = [[NSCharacterSet characterSetWithCharactersInString:@"0123456789"]
invertedSet ];
NSString *name =@"";
if ([NSStringstringWithFormat:@"%@%@",contact.familyName,contact.givenName]) {
name = [NSStringstringWithFormat:@"%@%@",contact.familyName,contact.givenName];
}
NSString *strPhone =@"";
if (contact.phoneNumbers.count>0) {
strPhone = [[[contact.phoneNumbersfirstObject].value.stringValuecomponentsSeparatedByCharactersInSet:setToRemove]componentsJoinedByString:@""];
}
if ([[namestringByTrimmingCharactersInSet:[NSCharacterSetwhitespaceCharacterSet]] length]>0)
{
[nameArrayaddObject:name];
[phoneArrayaddObject:strPhone];
}
}];
if (flag) {
NSLog(@"手机号%@",phoneArray);
NSLog(@"名字%@",[nameArraycomponentsJoinedByString:@","]);
}
}
else{
CFErrorRef *error =nil;
ABAddressBookRef addressBook =ABAddressBookCreateWithOptions(NULL, error);
__blockBOOL 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 = (__bridgeNSString *)(ABRecordCopyValue (person,kABPersonFirstNameProperty )) == nil ? @"" : (__bridgeNSString *)(ABRecordCopyValue (person,kABPersonFirstNameProperty ));
NSString *familyName = (__bridgeNSString *)(ABRecordCopyValue (person,kABPersonLastNameProperty )) == nil ? @"" : (__bridgeNSString *)(ABRecordCopyValue (person,kABPersonLastNameProperty ));
ABMultiValueRef phoneNumbers =ABRecordCopyValue(person, kABPersonPhoneProperty);
NSArray *array =CFBridgingRelease(ABMultiValueCopyArrayOfAllValues(phoneNumbers));
NSString *phoneNumber =@"";
if (array.count >0) {
phoneNumber = [array firstObject];
}
//去除数字以外的所有字符
NSCharacterSet *setToRemove = [[NSCharacterSet characterSetWithCharactersInString:@"0123456789"]
invertedSet ];
NSString *strPhone = [[phoneNumbercomponentsSeparatedByCharactersInSet:setToRemove]componentsJoinedByString:@""];
NSString *name = [NSStringstringWithFormat:@"%@%@",familyName,givenName];
if ([[namestringByTrimmingCharactersInSet:[NSCharacterSetwhitespaceCharacterSet]] length]>0)
{
[nameArrayaddObject:name];
[phoneArrayaddObject:strPhone];
}
}
NSLog(@"手机号%@",[phoneArraycomponentsJoinedByString:@","]);
NSLog(@"名字%@",[nameArraycomponentsJoinedByString:@","]);
}
}
returnphoneArray;
}
- iOS 访问通讯录
- IOS---访问通讯录
- IOS如何访问通讯录
- iOS 访问通讯录
- iOS 访问通讯录
- iOS -- 访问通讯录
- ios 访问通讯录
- IOS访问通讯录
- IOS如何访问通讯录
- iOS 访问通讯录
- iOS访问通讯录
- ios 通讯录访问权限
- iOS 访问手机通讯录
- iOS 通讯录访问(一)
- iOS 通讯录访问(二)
- ios中访问通讯录数据
- [转]IOS如何访问通讯录
- Swift iOS 9通讯录访问
- 浅谈MVC模式下--动态计算并设置view的frame
- 程序员才看得明白的面试圣经
- Linux内核版本说明
- Gradle 中 buildConfigField的巧妙应用
- java对redis的基本使用(Jedis)
- iOS 访问通讯录
- hibernate和ibatis对比
- Unix Study之--AIX 6.1配置网络安装服务
- MapReduce实现join操作
- 微信去除 防欺诈盗号请勿支付或输入qq密码 以及 防欺诈或盗号请不要输入qq密码 的方法
- jQuery Ajax和$.ajax jqXHR实现教程
- 原码, 反码, 补码 详解
- http协议
- QT中对BSON的处理