ABAddressBookCopyArrayOfAllPeople设备上的错误 – 在模拟器上

我有以下代码:

NSMutableArray *contacts = [[NSMutableArray alloc]init]; CFErrorRef *error = nil; ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, error); if (error) } NSArray *arrayOfPeople = (__bridge_transfer NSArray*)ABAddressBookCopyArrayOfAllPeople(addressBook); 

它在模拟器上工作,并给我预期的结果 – 但在设备上的联系人数量是0,没有错误(应用程序奇怪地不要求我的权限来访问通讯簿 – 我甚至删除并重新安装应用程序) 有任何想法吗 ?

提前致谢

在iOS 6上,您需要访问通讯簿。 调用ABAddressBookRequestAccessWithCompletion()获取权限。 看到这个和AddressHelper

 CFErrorRef error = nil; ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, &error); ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error) { if (error) { NSLog(@"error %@", error); }else if (granted){ // Do what you want with the Address Book }else{ NSLog(@"permission denied"); } CFRelease(addressBook); });