我需要在iOS应用程序中存储活动提要。活动提要项将有一个payload
字段,它可以是系统中许多(我实际上是指许多)类型的实体之一。
在我的CoreData模型中,在Activity
实体上实现这个payload
关系字段的好方法是什么?
是否可以使用id
数据类型,或者可能使用NSManagedObject
类型?
解决这个问题的一种方法可能是将CoreData的entityId作为字符串存储在一个特殊字段中,但如果有更好的方法,我宁愿避免这种情况。
示例:
为了简单起见,假设我们有一个不那么标准的博客模型:User
、Blog
、BlogPost
、Comment
,可能会发生以下活动:
- 用户可以创建一个新博客
- 用户可以发布新的博客文章
- 可以对博客发表评论
- 一条评论可能会被点赞
- 等等
其中的每一个都在网站上生成一个新的Activity
项目,该项目又与被修改或正在执行的项目具有相关的payload
关系
现在我需要下载,翻译和存储这些活动提要项目从网站在我的iPhone应用程序。。。那么我该如何模拟这个payload
字段,因为它可能指向任何可能的实体?
然而,在我的真实代码中,大约有10多种类型的实体可以放入这个payload
字段,所以我在这里寻找一个好的方法。
如果您不需要搜索/查询变量类型对象的字段,那么我建议使用NSCoder将它们转换为二进制表示,并将它们存储在托管对象的BLOB字段中。您可能还想将某些类型信息存储在同一托管对象的其他字段中。另一方面,如果需要在这些变量对象之间进行搜索,则必须为每个对象创建一个新的托管对象类型(实体)。请参阅我的答案:NSCoding VS Core data
您唯一可以使用的是NSManagedObject。因此,您必须创建模型和关系,并为活动和负载创建新文件,这些文件将是NSManagedObject的子类。
请参阅核心数据编程指南。你会在那里找到答案。