2016-09-23 7 views
2

연락처 선택 도구에서 연락처를 선택하면 iOS10.0에서 응용 프로그램이 충돌합니다. 'Contact Address book crash on iOS 10 beta에 논의 된 바와 같이 나는 이미의 Info.plist에 NSContactsUsageDescription을 추가 한주소록 충돌 iOS10에서

*** Terminating app due to uncaught exception 'CNPropertyNotFetchedException', reason: 'A property was not requested when contact was fetched.' 
*** First throw call stack: 
(
    0 CoreFoundation      0x0000000105a1c34b __exceptionPreprocess + 171 
    1 libobjc.A.dylib      0x00000001052cd21e objc_exception_throw + 48 
    2 CoreFoundation      0x0000000105a85265 +[NSException raise:format:] + 197 
    3 Contacts       0x000000010dc6d96f -[CNContact sectionForSortingByFamilyName] + 160 
    4 Contacts       0x000000010dc3e18e __55-[CNContact(iOSABCompatibility) overwritePerson:error:]_block_invoke + 44 
    5 CoreFoundation      0x00000001059ad2fd __53-[__NSArrayI enumerateObjectsWithOptions:usingBlock:]_block_invoke + 77 
    6 CoreFoundation      0x00000001059ad1df -[__NSArrayI enumerateObjectsWithOptions:usingBlock:] + 207 
    7 Contacts       0x000000010dc3e0f4 -[CNContact(iOSABCompatibility) overwritePerson:error:] + 240 
    8 Contacts       0x000000010dc3dfc0 -[CNContact(iOSABCompatibility) detachedPersonWithError:] + 46 
    9 AddressBookUI      0x00000001057bdd77 -[ABPeoplePickerNavigationController contactPicker:didSelectContact:] + 145 
    10 ContactsUI       0x0000000112396eb2 -[CNContactPickerViewController pickerDidSelectContact:property:] + 306 
    11 ContactsUI       0x000000011243ee6f -[CNContactPickerHostViewController pickerDidSelectContact:property:] + 95 
    12 ContactsUI       0x000000011243f5ec __71-[CNContactPickerExtensionHostContext pickerDidSelectContact:property:]_block_invoke + 66 

하지만하셨습니까 : 여기

let contactsPicker = ABPeoplePickerNavigationController() 
contactsPicker.peoplePickerDelegate = self 
self.presentViewController(contactsPicker, animated: true, completion: nil) 

이 충돌 로그에서 스택 추적입니다 : 연락처 선택 도구는이 같은 ABPeoplePickerNavigationController을 사용하여 표시됩니다 도움이 필요하며 iOS8 기기를 지원해야하므로 CNContactPickerViewController을 사용할 수 없습니다.

답변

0

주소록 API는 iOS 9에서 더 많은 객체 지향 연락처 프레임 워크를 사용하지 않으려했습니다.

ABPeoplePickerViewController를 사용하는 대신 CNContactPickerViewController로 이동하십시오. Erdekhayser의 솔루션에서

1

이므 란 라힘

을 (Contact Address book crash on iOS 10 beta)

당신이 CNContactPickerViewController 사용할 수 확인하려면이 방법을 사용할 수 있습니까?

if (NSClassFromString(@"CNContactPickerViewController")) { 
     // iOS 9, 10, use CNContactPickerViewController 
     CNContactPickerViewController *picker = [[CNContactPickerViewController alloc] init]; 
     picker.delegate = self; 
     picker.displayedPropertyKeys = @[CNContactPhoneNumbersKey]; 
     [pr presentViewController:picker animated:YES completion:nil]; 
    }else{ 
     // iOS 8 Below, use ABPeoplePickerNavigationController 
     ABPeoplePickerNavigationController *picker = [[ABPeoplePickerNavigationController alloc] init]; 
     picker.peoplePickerDelegate = self; 
     [pr presentViewController:picker animated:YES completion:nil]; 
    }