Ich habe derzeit eine Funktion, die ein Realm-Objekt in die Datenbank schreibt und eine Benachrichtigung schreibt. Wenn das Objekt geschrieben wird, wird es einer uicollection-Ansicht hinzugefügt und angezeigt. Die folgende Funktion fügt das Objekt hinzu und legt eine Benachrichtigung basierend auf einem UIDatePicker fest. Dieser Code ist nicht dargestellt, da es eine Menge ist, die nicht auf das Problem nicht betreffen:Wie Realm-Objekt aus verschiedenen Funktionen abrufen? Swift
func createTaskWithDate() {
let task = Task()
task.name = textField.text!
//notification code under here
try! realm.write {
realm.add(task)
updateData()
}
Ich habe auch eine andere Funktion, die zu einer Meldung Satz auf eine Aktion reagiert. Wenn der Benutzer auf die Benachrichtigung tippt, erhält er die Option "als abgeschlossen markieren". Wenn der Benutzer auf "Als abgeschlossen markieren" klickt, versuche ich, das Objekt aus der "createTaskWithDate()" -Methode abzurufen und es aus der Sammlungsansicht zu löschen, aber ich bin nicht sicher, wie dieses Objekt von dieser Methode abgerufen werden kann:
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()
}
Wie könnte ich das tun?
Aber da jede Aufgabe einen anderen Titel hat, wie würde ich die richtige abrufen? Sagen wir, mein Name ist "Lebensmittel einkaufen". In der Benachrichtigung wird es sagen: "Erinnerung: kaufen Lebensmittel". Wenn der Benutzer dann die Markierung als vollständige Aktion antippt, muss er dieses bestimmte Objekt aus dem Bereich löschen. – ayjoy
Für mich habe ich Identifier-Feld verwendet, um festzustellen, welches Element markiert wurde. Der Bezeichner ist ein eindeutiger Schlüssel für bestimmte Benachrichtigungen. Und action für diese (wie ich verstehe, Sie möchten Benutzer auf eine Schaltfläche bei der Benachrichtigung tippen, um dieses Element zu markieren) durch Hinzufügen von UNNotificationAction und überprüfen Sie, welche bestimmte Aktion Schaltfläche Benutzer tippen. Schreiben Sie Ihren Bezeichner einfach um und fügen Sie Ihrer Benachrichtigung eine Aktion hinzu. Verwenden Sie keinen Titel zum Überprüfen der Elemente. –