0
1

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.

EKReminder変数が勝手に更新されて厄介だと言う話

Last updated at Posted at 2018-11-08

最近、リマインダーのアプリを作っているけどEKReminderの仕様?なのか厄介だった点が出てきた。
それは、EKReminderはeventStore.saveを実行すると、アプリ内に変数として保持している値も自動で更新されると言うこと。

例えば、

var hogeReminders: [EKReminder]
Manager.swift

func save(reminder: EKReminder, completion: @escaping (_ isSuccess: Bool) -> Void) {
        print(reminder.title)              // "HogeHoge"
        print(hogeReminders.first?.title)  // ""
        self.eventStore.requestAccess(to: .reminder) { (granted, error) in
            if granted == false { completion(false); return }
            do {
                try self.eventStore.save(reminder, commit: true) // ここでプロジェクト内の変数も全て更新される?
                print(reminder.title)              // "HogeHoge"
                print(hogeReminders.first?.title)  // "HogeHoge"
                completion(true)
            } catch {
                completion(false)
            }
        }
    }
ViewController.swift

override func viewDidLoad() {
        var manager = Manager()
        manager.save(reminder: hogeReminders.first!) { (isSuccess) in
            
        }
}

hogeRemindersを保持しておいて、保存後の値と比較し更新されたらRemindersTableViewを更新しようと処理を書いた。けど、値が更新されたことを確認できたなかった(hogeReminders != remindersでは既にhogeRemindersが自動更新された後だからダメ)のでちょっと悩みました。

もし間違ってたり、良い解決策があったら教えてください。

0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?