8
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

iOS ReminderへのSwiftからの新規登録

Last updated at Posted at 2016-01-12

iOS Reminder関係の処理についてスニペットをいくつか見かけるけど、基本的なことが書いてなかったので、Error処理 Swift2.0から変更に成った部分も合わせてまとめてみる。
*いつも読んでるだけだったのでたまにはと思い初投稿。

サンプルソースコード

swift

/* Step1: EKEventStoreインスタンスの作成 */
var eventStore = EKEventStore()

/* Step2: EKReminderインスタンスの作成と必要な情報のセット */
var NewReminder: EKReminder = EKReminder(eventStore: eventStore)
NewReminder.title = "新しいReminder"
NewReminder.calendar = eventStore.defaultCalendarForNewReminders()

/* Step3: Step2で作ったリマインダーインスタンスを保存する */
do {
     try eventStore.saveReminder(NewReminder, commit: true)
} catch let error{
     print(error)
}

それぞれの解説

Step1: EKEventStoreインスタンスの作成

EKEventStoreは本体内に存在するカレンダーやReminderの情報をRead & Writeできるクラス。カレンダー・Reminderで似ている関数も多いがデータ構造の違いもあり全て同じではない。なお処理が重いらしいのであまりたくさんインスタンス作らない方が良いらしい。

STEP2: EKReminderインスタンスの作成と必要な情報のセット

EKReminderはリマインダーのためのオブジェクト。タイトルやプライオリティ・期限などをセットできる。eventStoreから取得して項目を編集しても良いが、今回は新規リマインダー作成のため新しくインスタンスから作成。EKReminder.calendarは、どのリストに登録するのかを指定する項目。defaultCalendarForNewReminders()はその端末内でデフォルト設定してあるリストを自動的に参照指定している
なおiOSの[設定->リマインダー->デフォルトのリスト]で設定ができる

Step3: Step2で作ったリマインダーインスタンスを保存する

SWIFT2.0からdo catchが使えるので、それに合わせて。Objective-Cとはerrorの引数がないなど多少違うので過去記事見ていると若干迷うかも?

参考

EKEventStore Class Reference
Swift2.0で追加された try, do-catch, defer を試してみる

その他メモ

1) 既存のReminderの編集方法は?

基本的にsaveReminderで保存の仕方は同じ。
EKReminder.calendarItemIdentifier
EKReminder.calendarItemExternalIdentifier
この辺をキー(*1)としてその他の項目を編集して、上記と同じようにEKEventStore.saveReminderに投げるだけで良い。

*1: これらのIDについては端末によって異なるっぽいが未検証

2) パーミッション問題

そもそもMKEventStoreへアクセスする際にパーミッション周りで引っかかる人も多いようなので、その辺については下記を参照。
iOSでカレンダーにアクセスしてイベントを取得する

3) 詳細なサンプル

そもそもReminder Managerみたいなクラス作って完成したと喜んでたら、そもそもちゃんと作り込んでいる人がいた。なんかほとんど似てる。。
EventKit reminders manager : How to retrieve, create, and edit reminders from within your app in Swift

8
12
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
8
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?