我想用这些代码获取地址簿的内容。
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。
问题是你对nil的测试毫无意义。如果您未被用户授予对地址簿的访问权限,则ABAddressBookCreate()
的结果仍为非零。但它将毫无用处!
因此,道德是:始终正确地测试,以确定您是否被授予访问权限(ABAddressBookGetAuthorizationStatus
),如果访问既未被授予也未被拒绝,则正式请求(ABAddressBookRequestAccessWithCompletion
)。