Youngho Jo

About description

Swift에서 캘린더 다루기

02 Feb 2017 » iOS

구조

EventKit

swift에서 캘린더를 활용하기 위해서는, EventKit을 import해야한다.

import EventKit

EKEventStore

event의 fetch, create, edit, delete 작업은 EKEventStore를 선언하여 유저 캘런더 DB에 접근한다.

EKEvent

캘린더 DB에 등록되는 실제 event이다.

주의사항

EKEventStore을 init 할때는 큰 시간이 걸리기 때문에, event를 각각 추가하거나 삭제할때마다 불러오면, 성능에 악영향을 끼친다. 따라서, 앱 실행시 한 번만 init하고 죽지않게 살려둔다.

Event를 불러오는 두 가지 방법

Predicates 사용

// EKEventStore
func events(matching predicate: NSPredicate) -> [EKEvent]
- predicate:
검색을 위한 predicate
predicateForEvents(withStart:end:calendars:) 메소드를 사용해서 만들어야 한다.
// EKEventStore
func predicateForEvents(withStart startDate: Date, end endDate: Date, calendars: [EKCalendar]?) -> NSPredicate
- return
predicate을 만족하는 모든 event를 EKEvent array형태로 리턴
    
- Synchronous
동기적으로 작동하기 때문에, 한 개의 event가 등록되고 나서
다음 event가 등록되어야 한다.

Unique Identifiers 사용

// EKEventStore
func event(withIdentifier identifier: String) -> EKEvent?
- return
identifier를 만족하는 첫 번째 발견된 event를 리턴
    
- identifier
// EKEvent
var eventIdentifier: String { get }
위의 속성을 event에서 가져올 수 있다.

Related Posts