【问题标题】:Storing pointers in Core Data在 Core Data 中存储指针
【发布时间】:2011-11-07 19:15:10
【问题描述】:

我将一些对象存储在具有固有寿命的核心数据中。我在此生命周期内安排了有关对象创建的本地通知,然后处理该对象时触发了通知。

问题是对象可以提前结束。但是本地通知不知道这一点,并且仍然在各自的时间触发,这会导致混乱。有没有办法将指向通知的指针与对象一起存储?因此,如果它提前结束,它可以取消它。

我想坚持通知,因为我需要用户知道它何时完成,如果它正常完成。并且通知不依赖于正在运行的应用程序。

基本问题您可以在核心数据中存储指向对象的指针吗?第二个问题是本地通知是否会在其生命周期内更改内存地址

我知道如果提前结束,我可以将它们全部取消并重新安排所需的时间,但这似乎很浪费,希望有更好的方法。

【问题讨论】:

    标签: iphone ios core-data uilocalnotification


    【解决方案1】:

    UILocalNotification 不可序列化(它没有实现NSCoding),所以你不能用Core Data 持久地存储它。我建议您将 Core Data 实体的 managedObjectID 以可序列化的形式(例如,作为 URL)添加到通知的 userInfo 属性中。如果您需要删除特定通知,请在 UIApplications 的 scheduledLocalNotifications 数组中搜索其 userInfo 属性中具有相应托管对象 ID 的本地通知,然后通过 cancelLocalNotification: 取消该通知。

    【讨论】:

      【解决方案2】:

      请注意 - 我一直在审查这个主题,我看到一些与@MrMage 的答案相矛盾的信息:

      1. UILocalNotification 符合the Apple doc 的 NSCoding
      2. 这是关于 stackoverflow 的回答,它描述了如何将本地通知存储在 nsdata 中,这应该使您能够将本地通知作为属性存储在实体中:Delete a particular local notification

      虽然不是这个主题的专家,所以任何反馈都会很棒。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-29
        • 2011-09-28
        • 2018-01-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-20
        相关资源
        最近更新 更多