在Core Data中存储指针

时间:2011-11-07 19:15:11

标签: iphone ios core-data uilocalnotification

我将一些对象存储在具有固有寿命的核心数据中。我正在为这个生命周期安排关于对象创建的本地通知,然后处理该对象进行了通知。

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

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

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

我知道我可以取消所有这些并重新安排所需的,如果一个人提前结束但这看起来很浪费,希望有更好的方法。

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:0)

抬头 - 我一直在审查这个主题,我看到一些与@MrMage的答案有冲突的信息:

  1. UILocalNotification确实符合每the Apple doc
  2. 的NSCoding
  3. 这是stackoverflow的答案,它描述了如何在nsdata中存储本地通知,这使您可以将localnotification存储为实体中的属性:Delete a particular local notification
  4. 虽然不是这方面的专家,所以任何反馈都会很棒。