我将一些对象存储在具有固有生命周期的核心数据中。我正在为这个生命周期的对象创建安排本地通知,然后在通知被触发时处理该对象。
问题是对象可以提前结束。但是本地通知并不知道这一点,仍然会在各自的时间触发,这会导致困惑。有没有办法在对象中存储指向通知的指针?因此,如果它提前结束,它可以取消它。
我想坚持使用通知,因为我需要用户知道它何时完成,如果它正常完成的话。并且通知不依赖于正在运行的应用程序。
基本问题您可以在核心数据中存储指向对象的指针吗?第二个问题是本地通知是否在其生命周期内更改内存地址
我知道我可以将它们全部取消并重新安排需要提前结束的那些,但这看起来很浪费,希望有更好的方法。
最佳答案
UILocalNotification
是不可序列化的(它没有实现 NSCoding
),所以你不能用 Core Data 持久存储它。我建议您将核心数据实体的 managedObjectID 以可序列化的形式(例如作为 URL)添加到通知的 userInfo
属性中。如果您需要删除特定通知,您可以在 UIApplication
的 scheduledLocalNotifications
数组中搜索本地通知,并在其 userInfo
中使用相应的托管对象 ID > 属性,然后通过 cancelLocalNotification:
取消该属性。
关于iphone - 在 Core Data 中存储指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8041351/