Core Data 和 Userdefaults 不存储数据

Posted

技术标签:

【中文标题】Core Data 和 Userdefaults 不存储数据【英文标题】:Core Data and Userdefaults not storing data 【发布时间】:2020-01-27 12:34:57 【问题描述】:

当我的应用程序关闭时,Core Data 和 UserDefaults 不存储数据。

当我的应用程序关闭时我会收到通知,因此我将其存储在核心数据中并默认执行一些操作。

当应用程序打开时,它会存储所有信息,但只有应用程序关闭它不工作,任何想法都可以这样做。

我将数据存储在以下函数中。

  func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) 
            let response = notification.request.content.userInfo["aps"] as! NSDictionary
             //here i will send response will store to core date
            self.defaults.set("1", forKey: "notifyid")
            completionHandler([.alert, .badge, .sound])
        
     

【问题讨论】:

实际上你误解了这个问题兄弟。当我的应用程序关闭时,我会收到推送通知。我有存储通知数据的功能。现在当我的应用程序关闭时它不会存储。打开应用程序时它工作正常。 如果应用程序关闭,您的willPresent 函数不会被调用。 我无法在应用程序关闭时对其进行调试。可以给点建议吗 我认为 willPresent 函数没有调用。 我已经告诉过你了。 【参考方案1】:

您将其存储在错误的功能中。 Will Present 仅在应用程序处于前台时被调用。所以当应用程序在后台时它不会工作,而不是 Will Present 函数使用确实接收远程函数:

func application(_ application: UIApplication, didReceiveRemoteNotification data: [AnyHashable : Any]) 
    let response = notification.request.content.userInfo["aps"] as! NSDictionary
    self.defaults.set("1", forKey: "notifyid")    

注意:请确保在后台模式下的应用功能中您的远程通知和后台获取。否则它将无法正常工作。

【讨论】:

兄弟,我用过通知服务和通知内容,用于丰富的自定义推送通知,这个功能不会命中,有什么其他建议。

以上是关于Core Data 和 Userdefaults 不存储数据的主要内容,如果未能解决你的问题,请参考以下文章

尝试将数组保存到 UserDefaults

从 UserDefaults 保存/获取 UIColor

无法从 Userdefaults 访问数据 - Swift

在 UserDefaults 中保存项目数组 - iOS 12

我应该如何获取和设置 UserDefaults 的值?

SwiftUI 从 UserDefaults.standard 存储和提取字典