2014-09-27 62 views
3

我试图访问联系人/通讯录程序在我的iOS上的8IOS 8:访问联系人/地址簿错误

应用这是我的代码:

ABAddressBookRef addressBookRef = ABAddressBookCreateWithOptions(NULL, NULL); 
if (ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusNotDetermined) { 
    ABAddressBookRequestAccessWithCompletion(addressBookRef, ^(bool granted, CFErrorRef error) { 
     if (granted) { 
      //populate 
     } 
    }); 
} else if (ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusAuthorized) { 
    //populate 
} 
else { 
    // Alert telling user to change privacy setting 
} 

此代码适用于iOS精绝7.但在ios 8上,它将我从应用程序中抛出,然后我需要在模拟器上重新运行应用程序,然后工作正常。这是尝试访问iOS 8上的通讯录或通讯录的应用程序的正常行为。

请指导我如何解决此问题。

+0

:)我的雇主做 – user1259574 2014-09-27 18:27:38

回答

2

我在iOS 8更新后遇到了同样的问题。问题是地址簿框架在iOS 8中发生了变化,您现在应该使用AddessBookUI并使用ABPeoplePickerNavigationController及其代理来访问地址簿。

如果您需要访问联系人编程的方式,我发现这样做就是这个样子

ABPeoplePickerNavigationController* peoplePicker = [[ABPeoplePickerNavigationController alloc] init]; 

[self presentViewController:peoplePicker animated:NO completion:nil]; 
[self dismissViewControllerAnimated:NO completion:nil]; 

ABAddressBookRef addressBook = [peoplePicker addressBook]; 
CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople(addressBook); 
CFIndex nPeople = ABAddressBookGetPersonCount(addressBook); 

我不知道这是否是应该做的正确方法,但就是工作的一种方式。

希望这可以帮助你。

相关问题