2014-04-14 5 views
0

이 코드가 포함 된 주소록의 내용을 가져 오려고합니다.주소록의 내용을 가져올 수없는 이유

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

나는 # import 를 가지고 있습니다. –

답변

2

문제는 nil 테스트가 의미가 없다는 것입니다. 사용자가 주소록에 대한 액세스 권한을 부여받지 않은 경우 ABAddressBookCreate()의 결과는 여전히 nil이 아닙니다. 그러나 그것은 쓸모 없을 것이다!

도덕은 : 액세스가 허가되었는지 (ABAddressBookGetAuthorizationStatus) 항상 확인하고 액세스가 허용 또는 거부되지 않은 경우 형식적으로 (ABAddressBookRequestAccessWithCompletion) 요청하십시오.

+1

예보기 https://github.com/mattneub/Programming-iOS-Book-Examples/blob/master/bk2ch18p713addressBook/ch31p973addressBook/ViewController.m – matt

관련 문제