King of Stock

CNContactViewController 유의사항? 본문

IT 기술

CNContactViewController 유의사항?

king of stock 2018. 4. 14. 15:59

사용자 기기의 특정 연락처를 보여주고자 할때에 이용하는 CNContactViewController 사용하다가 오류가 발생했던 상황에 대해 공유합니다~


일단은 CNContactViewController 클래스 일부 번역(Documentation)


[원문]

The CNContactViewController class implements the view to display a contact. CNContactViewController can display a new contact, unknown contact, or existing contact. You must use one of the designated initializers from init(forNewContact:), init(forUnknownContact:), or init(for:) respectively.


[발번역]

CNContactViewController 클래스는 연락처를 보여주기 위해서 구현된 클래스이다. CNContactViewController는 새로운 연락처, 이름이 없는 연락처, 저장된 연락처를 보여 줄수 있다. 여러분들은 각각의 init(forNewContact:), init(forUnknownContact:), or init(for:) 초기화 메서드 중에 1개를 이용해야 합니다.


생략...



 위에 일부 내용처럼 특정인의 연락처를 보여 줄 수 있는 컨트롤러를 제공하고 있는데, API를 자세히 읽어보지 않고 그냥 코딩을 시작하거나 어딘가에서 복~붙(?)한 코드를 사용시 오류가 발생할 가능성이 아주 높다. 아마도 아래와 같은 내용일거라 추측됩니다.(내가 경험 오류 메세지)


CNPropertyNotFetchedException', reason: 'Contact 0x7f9d07d31ce0 is missing some of the required key descriptors: (

    "<CNAggregateKeyDescriptor: 0x60800023f120: kind=+[CNContactContentViewController descriptorForRequiredKeys]>"

)'


대충 보면 필수 키 서술자 중에 몇개가 빠졌다고 머라고 머라고 한다... 아... 정말 ㅋㅋ

저게 뭘까 한번 찾아봤다.



Discussion 항목으로 기술을 해놨는데, 발번역을 한번 해보자면... -_ㅜ


"CNContactViewController 에 특정 연락처를 보여주고 싶으면, 이 서술자를 CNContactFetchRequest의 keysToFetch에 전달한다" 라고 나온다. 아 그렇군... 이래서 영어를 잘 해야해...


간단하게 코드로 보면 아래와 같습니다.



Comments