我現在有一個寫入境界對象到數據庫中,並寫入通知功能。當對象被寫入時,它會被添加到一個uicollectionview中並顯示出來。下面的函數添加對象並根據UIDatePicker設置通知。沒有顯示的代碼,因爲它是有很多不屬於問題:如何從不同的功能檢索領域對象?斯威夫特
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和檢查什麼具體的操作按鈕的用戶點擊。只需使用重寫您的標識符並將其添加到通知中,請勿使用標題來檢查元素。 –