为什么我无法获取地址簿的内容

时间:2014-04-14 14:44:03

标签: ios

我正在尝试使用这些代码获取地址簿的内容。

ABAddressBookRef addressBook =
ABAddressBookCreate();

if (addressBook != nil)
{
    NSLog(@"Succesful.");


    NSArray *allContacts = (__bridge_transfer NSArray
                            *)ABAddressBookCopyArrayOfAllPeople(addressBook);
    NSUInteger i = 0;
    NSLog(@"countT=%lu",(unsigned long)[allContacts count]);
}

我得到成功的日志但计数总是“0”,我使用模拟器,我在其中添加了联系人进行测试。它是iOS 7和Xcode 5.

1 个答案:

答案 0 :(得分:2)

问题在于你对nil的测试毫无意义。如果您未被用户授予对地址簿的访问权限,则ABAddressBookCreate()的结果仍然是非零的。但它没用!

因此,道德是:始终正确测试以确定您是否已被授予访问权限(ABAddressBookGetAuthorizationStatus),如果访问既未被授予也未被拒绝,则正式请求(ABAddressBookRequestAccessWithCompletion)。< / p>