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

问题描述 投票:0回答:1

我想用这些代码获取地址簿的内容。

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。

ios
1个回答
2
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.