在 Core Data 中存储指针
Posted
技术标签:
【中文标题】在 Core Data 中存储指针【英文标题】:Storing pointers in Core Data 【发布时间】:2011-11-07 19:15:10 【问题描述】:我将一些对象存储在具有固有寿命的核心数据中。我在此生命周期内安排了有关对象创建的本地通知,然后处理该对象时触发了通知。
问题是对象可以提前结束。但是本地通知不知道这一点,并且仍然在各自的时间触发,这会导致混乱。有没有办法将指向通知的指针与对象一起存储?因此,如果它提前结束,它可以取消它。
我想坚持通知,因为我需要用户知道它何时完成,如果它正常完成。并且通知不依赖于正在运行的应用程序。
基本问题您可以在核心数据中存储指向对象的指针吗?第二个问题是本地通知是否会在其生命周期内更改内存地址
我知道如果提前结束,我可以将它们全部取消并重新安排所需的时间,但这似乎很浪费,希望有更好的方法。
【问题讨论】:
【参考方案1】:UILocalNotification
不可序列化(它没有实现NSCoding
),所以你不能用Core Data 持久地存储它。我建议您将 Core Data 实体的 managedObjectID 以可序列化的形式(例如,作为 URL)添加到通知的 userInfo
属性中。如果您需要删除特定通知,请在 UIApplication
s 的 scheduledLocalNotifications
数组中搜索其 userInfo
属性中具有相应托管对象 ID 的本地通知,然后通过 cancelLocalNotification:
取消该通知。
【讨论】:
【参考方案2】:请注意 - 我一直在审查这个主题,我看到一些与@MrMage 的答案相矛盾的信息:
-
UILocalNotification 符合the Apple doc 的 NSCoding
这是关于 *** 的回答,它描述了如何将本地通知存储在 nsdata 中,这应该使您能够将本地通知作为属性存储在实体中:Delete a particular local notification
虽然不是这个主题的专家,所以任何反馈都会很棒。
【讨论】:
以上是关于在 Core Data 中存储指针的主要内容,如果未能解决你的问题,请参考以下文章
Core Data 实体中的可转换属性可以是指向 c 结构的指针吗?我的变压器没有被调用
一棵树的存储结构可以采用双亲表示法,即父指针数组表示法。试给出相应的类定义。其中,每个树结点包含两个成员:数据域data和双亲指针parent;树则有一个树结点数组NodeList[MaxSize](