Project 23 - Contact

DaY·2021년 6월 16일
1

iOS

목록 보기
48/52
post-thumbnail

Contacts

  • 기존의 Address Book 프레임워크 대체
  • iOS 또는 매킨토시 기기에 저장된 사용자 연락처 정보에 접근
  • 연락처 관리를 위해 CNContact 클래스 이용

CNContact

  • CNMutableContact 클래스의 객체를 이용하여 연락처의 속성 변경
  • CNLabeledValue 객체의 배열로 연락처 속성 항목 값 표현

ContactsUI

  • 기기의 연락처 정보 열람, 수정, 선택, 생성 등을 도와주는 컨트롤러 제공

이름, 이메일, 생일로 연락처 생성

@objc func createContact() {
    let newContact = CNMutableContact()
        
    newContact.givenName = nameText.text!
        
    if let homeEmail = emailText.text {
        let homeEmail = CNLabeledValue(label: CNLabelHome, value: homeEmail as NSString)
            
        newContact.emailAddresses = [homeEmail]
    }
        
    let birthdayComponents = Calendar.current.dateComponents([Calendar.Component.year, Calendar.Component.month, Calendar.Component.day], from: datePicker.date)
    newContact.birthday = birthdayComponents
        
    do {
        let saveRequest = CNSaveRequest()
            
        saveRequest.add(newContact, toContainerWithIdentifier: nil)
            
        try AppDelegate.appDelegate.contactStore.execute(saveRequest)
            
        navigationController?.popViewController(animated: true)
        dismiss(animated: true, completion: nil)
    } catch {
        Helper.show(message: "Unable to save the new contact.")
    }
}

연락처 내의 지정 키 내용 보이기

let contactPickerViewController = CNContactPickerViewController()
        
contactPickerViewController.predicateForEnablingContact = NSPredicate(format: "Birthday != nil")
contactPickerViewController.delegate = self
contactPickerViewController.displayedPropertyKeys = [CNContactGivenNameKey, CNContactFamilyNameKey, CNContactEmailAddressesKey, CNContactBirthdayKey, CNContactImageDataKey]

0개의 댓글