[swift] FSCalendar에서 특정 날짜의 이벤트 액션 주소록 저장 설정

FSCalendar은 iOS 앱에서 캘린더 기능을 구현하기 위한 유용한 라이브러리입니다. 이 라이브러리를 사용하면 사용자가 캘린더에서 날짜를 선택하고 해당 날짜의 이벤트를 확인할 수 있습니다. 이번에는 FSCalendar에서 특정 날짜의 이벤트에 대한 액션을 수행하고 주소록에 저장하는 방법에 대해 알아보겠습니다.

FSCalendarDelegate를 구현하기

FSCalendarDelegate는 FSCalendar에서 발생하는 이벤트에 대한 콜백을 받기 위해 필요한 프로토콜입니다. 따라서 FSCalendarDelegate를 구현하여 특정 날짜의 이벤트를 감지하고 액션을 수행할 수 있습니다.

import FSCalendar

class ViewController: UIViewController, FSCalendarDelegate {
    @IBOutlet weak var calendar: FSCalendar!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // FSCalendarDelegate를 self로 설정
        calendar.delegate = self
    }
    
    func calendar(_ calendar: FSCalendar, didSelect date: Date, at monthPosition: FSCalendarMonthPosition) {
        // 선택된 날짜에 대한 액션 수행
        saveEventToAddressBook(date: date)
    }
    
    func saveEventToAddressBook(date: Date) {
        // 주소록에 이벤트 저장 코드 작성
    }
}

위의 코드에서는 FSCalendarDelegate를 ViewController에 구현하였습니다. viewDidLoad()에서 calendar.delegate = self를 통해 delegate를 설정하고, calendar(_:didSelect:at:) 메서드를 구현하여 선택된 날짜에 대한 액션을 수행합니다.

주소록에 이벤트 저장하기

특정 날짜의 이벤트를 주소록에 저장하기 위해서는 iOS의 Contacts 프레임워크를 사용해야 합니다. 아래는 주소록에 이벤트를 저장하는 코드의 예시입니다.

import Contacts

func saveEventToAddressBook(date: Date) {
    let store = CNContactStore()
    
    let event = CNMutableContact()
    event.givenName = "Birthday"
    event.birthday = date
    
    let saveRequest = CNSaveRequest()
    saveRequest.add(event, toContainerWithIdentifier: nil)
    
    do {
        try store.execute(saveRequest)
        print("Event saved to address book.")
    } catch {
        print("Failed to save event to address book: \(error.localizedDescription)")
    }
}

위의 코드에서는 Contacts 프레임워크를 사용하여 CNContactStore를 생성하고, CNMutableContact를 생성하여 이벤트 정보를 설정합니다. 마지막으로 CNSaveRequest를 사용하여 주소록에 이벤트를 저장합니다.

이제 FSCalendar에서 사용자가 날짜를 선택하면 saveEventToAddressBook() 메서드가 호출되어 주소록에 이벤트가 저장됩니다.

참고 자료