[swift] 연락처(Contacts) 앱에서 연락처를 추가, 수정, 삭제하는 방법

iOS의 연락처(Contacts) 앱은 사용자의 연락처 정보를 효과적으로 관리할 수 있도록 도와줍니다. 이 글에서는 Swift를 사용하여 연락처 앱에서 연락처를 추가, 수정, 삭제하는 방법에 대해 살펴보겠습니다.

연락처 추가

import Contacts

let contact = CNMutableContact()
contact.givenName = "John"
contact.familyName = "Doe"

let mobileNumber = CNLabeledValue(label: CNLabelPhoneNumberMobile, value: CNPhoneNumber(stringValue: "1234567890"))
contact.phoneNumbers = [mobileNumber]

let saveRequest = CNSaveRequest()
saveRequest.add(contact, toContainerWithIdentifier: nil)

do {
    try contactStore.execute(saveRequest)
    print("Contact added successfully")
} catch {
    print("Error adding contact: \(error.localizedDescription)")
}

위의 코드는 연락처를 추가하는 방법을 보여줍니다. CNMutableContact를 사용하여 새로운 연락처를 만들고, CNPhoneNumber을 사용하여 전화번호를 추가한 후, CNSaveRequest를 사용하여 변경 사항을 저장합니다.

연락처 수정

import Contacts

let contactStore = CNContactStore()

let predicate = CNContact.predicateForContacts(matchingName: "John Doe")
let keysToFetch = [CNContactGivenNameKey, CNContactFamilyNameKey, CNContactPhoneNumbersKey]

do {
    let contacts = try contactStore.unifiedContacts(matching: predicate, keysToFetch: keysToFetch)
    if let contact = contacts.first {
        let newPhoneNumber = CNLabeledValue(label: CNLabelPhoneNumberMobile, value: CNPhoneNumber(stringValue: "9876543210"))
        contact.phoneNumbers.append(newPhoneNumber)
        
        let saveRequest = CNSaveRequest()
        saveRequest.update(contact)
        
        try contactStore.execute(saveRequest)
        print("Contact updated successfully")
    } else {
        print("Contact not found")
    }
} catch {
    print("Error updating contact: \(error.localizedDescription)")
}

위의 코드는 연락처를 수정하는 방법을 보여줍니다. CNContact.predicateForContacts를 사용하여 특정 연락처를 찾고, 해당 연락처의 정보를 업데이트한 후 CNSaveRequest를 사용하여 변경 사항을 저장합니다.

연락처 삭제

import Contacts

let contactStore = CNContactStore()

let predicate = CNContact.predicateForContacts(matchingName: "John Doe")

do {
    let contacts = try contactStore.unifiedContacts(matching: predicate, keysToFetch: [])
    if let contact = contacts.first {
        let saveRequest = CNSaveRequest()
        saveRequest.delete(contact.mutableCopy() as! CNMutableContact)
        
        try contactStore.execute(saveRequest)
        print("Contact deleted successfully")
    } else {
        print("Contact not found")
    }
} catch {
    print("Error deleting contact: \(error.localizedDescription)")
}

위의 코드는 연락처를 삭제하는 방법을 보여줍니다. CNContact.predicateForContacts를 사용하여 특정 연락처를 찾고, CNSaveRequest를 사용하여 해당 연락처를 삭제합니다.

이와 같이 Swift를 사용하여 iOS의 연락처(Contacts) 앱에서 연락처를 추가, 수정, 삭제할 수 있습니다. 개별 앱에서 사용자의 연락처 정보를 관리하는 데 유용한 기능입니다.

참조: Apple Developer Documentation - Contacts