我正在尝试使用这些代码获取地址簿的内容。
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.
答案 0 :(得分:2)
问题在于你对nil的测试毫无意义。如果您未被用户授予对地址簿的访问权限,则ABAddressBookCreate()
的结果仍然是非零的。但它没用!
因此,道德是:始终正确测试以确定您是否已被授予访问权限(ABAddressBookGetAuthorizationStatus
),如果访问既未被授予也未被拒绝,则正式请求(ABAddressBookRequestAccessWithCompletion
)。< / p>