[swift] 스위프트(swift)를 사용하여 연락처(Contacts) 정보를 엑셀 파일로 내보내는 방법

많은 앱은 연락처(Contacts) 정보를 사용자가 편리하게 관리할 수 있도록 지원합니다. 사용자가 소유한 연락처 정보를 엑셀 파일로 내보내는 기능은 매우 유용합니다. 이 기능을 스위프트(Swift)를 사용하여 구현하는 방법에 대해 알아보겠습니다.

연락처 접근 권한 요청 (Requesting Access to Contacts)

먼저, 사용자의 연락처에 접근하기 위한 권한을 요청해야 합니다. 이를 위해 Info.plist 파일에 NSContactsUsageDescription 키를 추가하고 사용자에게 연락처 접근에 대한 이유를 설명하는 메시지를 작성해야 합니다.

let store = CNContactStore()
store.requestAccess(for: .contacts) { (granted, error) in
    if granted {
        // 권한이 허용됨
    } else {
        // 권한이 거부됨 또는 에러 발생
    }
}

연락처 정보 가져오기 (Fetching Contact Information)

연락처 접근 권한이 허용된 경우, 연락처 정보를 가져올 수 있습니다. CNContactFetchRequest를 사용하여 연락처 정보를 검색하고 원하는 형식으로 가공할 수 있습니다.

let keys = [CNContactGivenNameKey, CNContactFamilyNameKey, CNContactEmailAddressesKey]
let request = CNContactFetchRequest(keysToFetch: keys as [CNKeyDescriptor])

do {
    try store.enumerateContacts(with: request) { (contact, stop) in
        // 가져온 연락처 정보를 처리
    }
} catch {
    // 에러 발생
}

데이터를 엑셀 파일로 내보내기 (Exporting Data to Excel File)

내보낼 데이터를 모두 가져왔다면, 이를 엑셀 파일로 변환하여 내보낼 수 있습니다. CSV 형식으로 데이터를 저장하고, 이를 엑셀에서 열 수 있습니다.

var csvString = "이름,성,이메일\n"

for contact in contacts {
    let firstName = contact.givenName
    let lastName = contact.familyName
    var email = ""
    if let firstEmail = contact.emailAddresses.first {
        email = firstEmail.value as String
    }
    csvString.append("\(firstName),\(lastName),\(email)\n")
}

// csvString을 파일로 저장하거나 앱 내부에서 공유

위에서 생성된 csvString을 파일로 저장하거나 iOS 공유 시트를 사용하여 사용자가 선택한 위치로 내보낼 수 있습니다.

연락처 정보를 엑셀 파일로 내보내는 방법에 대해 간략히 살펴봤습니다. 보다 자세한 내용은 Apple 공식 문서를 참고하시기 바랍니다.