私は現在、レルムオブジェクトをデータベースに書き込み、通知を書き込む関数を持っています。オブジェクトが書き込まれると、オブジェクトはユークリッドビューに追加されて表示されます。以下の関数は、オブジェクトを追加し、UIDatePickerに基づいて通知を設定します。異なる機能から領域オブジェクトを取り出す方法は? Swift
func createTaskWithDate() {
let task = Task()
task.name = textField.text!
//notification code under here
try! realm.write {
realm.add(task)
updateData()
}
私も通知セット上のアクションに反応する別の機能を持っている:それは問題に関係していないがたくさんあるので、このコードは表示されません。ユーザーが通知をタップすると、「完了としてマークする」というオプションが与えられます。ユーザーが「完了としてマーク」をタップすると、「createTaskWithDate()」メソッドからオブジェクトを取得してコレクションビューから削除しようとしていますが、そのメソッドからそのオブジェクトを取得する方法がわかりません:
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping() -> Void) {
let identifier = response.actionIdentifier
let request = response.notification.request
if identifier == "complete" {
try! realm.write {
//realm.delete(task object from createTaskWithDate())
updateData()
}
}
completionHandler()
}
これを行うにはどうすればいいですか?
しかし、すべてのタスクが異なるタイトルを持っているので、どのように正しいものを取得できますか?私の仕事の名前が「食料品を買う」としましょう。通知では、「リマインダー:食料品を購入する」と表示されます。次に、ユーザーがマークを完全なアクションとしてタップすると、その特定のオブジェクトをレルムから削除する必要があります。 – ayjoy
私にとって、私は識別子フィールドを使用して、どの要素がマークされているかを判断しました。識別子は、特定の通知に対する一意のキーです。 UNNotificationActionを追加して、ユーザーがタップする具体的なアクションボタンを確認することで、このアクション(この要素をマークするために、通知時にユーザーがボタンをタップするようにしたいと思っています)。あなたの通知にあなたの識別子を書き換えてアクションを追加するだけで、要素をチェックするためのタイトルを使わないでください。 –