如何从不同的函数中检索领域对象? Swift

How to retrieve realm object from different function? Swift

我目前有一个函数可以将领域对象写入数据库并写入通知。当对象被写入时,它被添加到一个 uicollectionview 中并显示出来。下面的函数添加对象并设置基于 UIDatePicker 的通知。该代码未显示,因为它与问题无关:

func createTaskWithDate() {
   let task = Task()
 task.name = textField.text!
 //notification code under here
 try! realm.write {
 realm.add(task)
 updateData()
    }

我还有另一个函数可以响应通知集上的操作。当用户点击通知时,他们可以选择 "mark as complete"。当用户点击 "mark as complete" 时,我试图从 "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()
}

我该怎么做呢?

您想在触发用户通知或找到已存在的元素时创建新元素吗?如果要查找,可以从数据库中查询该元素,然后将其删除。您可以按日期或标识符查询(您可以使用用户默认值实现它,方法是将标识符字段添加到元素并在每次创建新元素时递增它)。 对于对象操作后的 UI 修改,您可以使用来自 Realm 的对象通知。你可以阅读它 here.

设置通知时,您应该在通知请求中存储通知所针对对象的 name/primary 键。您可以在 UNMutableNotificationContent.userInfo 中存储任何信息并通过

userNotificationCenter(_:didReceive:withCompletionHandler:) 中访问它

let userInfo = response.notification.content.userInfo.

然后您可以使用 userInfo 中存储的主键从 Realm 中检索对象。