LoginSignup
3
2

More than 5 years have passed since last update.

EventKitはmacOSとiOSで異なる

Last updated at Posted at 2018-04-10

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にアクセスしているらしく、値を取得するまでにやや時間かかかります。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2