2014-09-27 79 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); 

我不知道這是否是應該做的正確方法,但就是工作的一種方式。

希望這可以幫助你。

相關問題