EventKitはカレンダーやリマインダーのデータを読み書きするためのフレームワークで、iOSでもmacOSでも使えます。ただし両者には違いがあるので注意が必要です。

EventKitUI

一番大きな違いはEventKitUIフレームワークがiOSにしかない点です。そのためMacアプリでEKEventを表示させるには自前でビューワーを作る必要があります。

尚、EventKitUIEKEventのプライベートAPIにアクセスしており、EKEventEditViewControllerでは招待者を追加したり、EKEventViewControllerでは添付ファイルを表示することができます。EKEventでは招待者(attendees)は読み込み専用になっており、また添付ファイルにはアクセスすることすらできません。

endDateの違い

EKEvent.isAllDaytrue(終日予定)の場合、endDateの値がiOSとmacOSでは異なります。例えば2018年4月10日の終日予定の場合、endDateの値は以下のようになります。

iOS macOS
2018-04-10 23:59:59 +0900 2018-04-11 00:00:00 +0900

つまりiOSの場合、endDateは2018年4月10日午後11時59分59秒となりますが、macOSの場合は2018年4月11日午前0時0分0秒となります。endDateを読み込む場合は注意が必要です。

hasAlarmsのバグ

macOS 10.13.1でEKEvent.hasAlarmsを呼ぶと常にtrueが返されるというバグがあります。iOSでは発生しません。

この問題はEKEvent.alarmsnilもしくは空のリストであることをチェックすることで回避可能ですが、alarmsを初めて呼び出すときはEKEventStoreにアクセスしているらしく、値を取得するまでにやや時間かかかります。

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.