如何从不同的函数中检索领域对象? 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
中检索对象。
我目前有一个函数可以将领域对象写入数据库并写入通知。当对象被写入时,它被添加到一个 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
中检索对象。