2016-07-09 2 views
4

아래 코드를 사용하여 iOS 응용 프로그램의 연락처에 액세스합니다. ...iOS 10에서 ABAddressBookRequestAccessWithCompletion이 충돌 함

나는 충돌 보고서를 기록하는 방법에 NSSetUncaughtExceptionHandler를 설정하지만도 예외 핸들러가 호출되지

- (void)btcContacts_tap { 
    ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, NULL); 
    ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error) { 
     if (granted) { 
      _addressBookController = [[ABPeoplePickerNavigationController alloc] init]; 

      [[_addressBookController navigationBar] setBarStyle:UIBarStyleBlack]; 

      _addressBookController.delegate = self; 
      [_addressBookController setPredicateForEnablingPerson:[NSPredicate predicateWithFormat:@"%[email protected] > 0", ABPersonPhoneNumbersProperty]]; 
      [_addressBookController setPeoplePickerDelegate:self]; 
      [self presentViewController:_addressBookController animated:YES completion:nil]; 
     } 
     else { 
      dispatch_async(dispatch_get_main_queue(), ^{ 
       [self showMessage:NSLocalizedStringFromTable(@"PLEASE_GRANT_CONTACTS", LIApplicationLanguage(), nil) andAdvertise:@"" andService:nil andTransactionState:kTTTransactionStateInfo]; 
      }); 
     } 
    }); 
} 

: 그것은 아이폰 OS < 10에서 잘 작동했지만, 엑스 코드 (8) 및 iOS (10)와 충돌

다른 사람도이 문제에 직면 했습니까?

+1

후세인은 iOS 9에서 더 이상 사용되지 않습니다. 사용할 수 없습니다. 연락처 프레임 워크를 사용해야합니다. – user3182143

+0

연락처 프레임 워크를 사용하여 응용 프로그램을 만들고 싶다면 연락처 프레임 워크를 사용하여 답변을 게시 할 것입니다. – user3182143

답변

21

는 아이폰 OS 10 :

당신은 당신의 plist에 NSContactsUsageDescription을 넣어해야합니다. Like :

<key>NSContactsUsageDescription</key> 
<string>$(PRODUCT_NAME) uses photos</string> 

모두 사용 설명을 참조하십시오. here.

+0

정말로 도움이되었습니다. 감사합니다. –

+0

이것이 훌륭한 코드임을 나타내는 xcode 오류 메시지. 이 문제를 해결해 주셔서 감사합니다! – jwhat