在 Core Data 中分离单个对象模型的组件
Posted
技术标签:
【中文标题】在 Core Data 中分离单个对象模型的组件【英文标题】:Separating components of a single object model in Core Data 【发布时间】:2013-07-19 04:22:08 【问题描述】:我正在为我在 Core Data 中的数据设计架构。我的问题:我有一个List
对象。在我开始使用 Core Data 之前,我将它定义为 NSObject 的子类,但现在我正在使用 Core Data、NSManagedObject 等。我想知道我是否应该分解我的 List 对象的组件,就像在这个 @ 987654321@ 转至核心数据。
本质上,List
对象由一个
NSString uniqueID
NSString name
BOOL completed
BOOL notifyMe
NSDate notifyDate
NSDate creationDate
鉴于 NSManagedObject 强制您一次加载整个对象,这似乎是单个对象的大量数据。在List
对象之间建立一对一关系是否有意义,并说一个名为ListDetails
的新对象,其中List
然后变为
NSString uniqueID
NSString name
BOOL completed
而ListDetails
是
BOOL notifyMe
NSDate notifyDate
NSDate creationDate
提前感谢您的建议!
附加警告:
每个List
还与称为ListItem
的Entity
建立一对多关系。所以换句话说,目前我有两个Entities
,一个List
和ListItem
。如果我将List
拆分为两个组件(List
和ListDetails
),我的一对多关系是否仍然只是与List
?
【问题讨论】:
【参考方案1】:除非您相当确定 name 或 uniqueID 会变得超长,否则即使有六个属性(特别是当两个属性是 BOOL
s 时),内存占用也会非常小。
如果您发现需要获取大量列表实体但只需要几个属性的地方,您可以设置一个获取请求,将其返回类型设置为字典并指定您想要的属性。例如,您可以使用复合谓词抓取所有不完整、需要通知和日期已过的实体,然后让它返回字典中的名称和唯一 ID。
如果您确实将其拆分,那么List
很可能是与ListItem
和ListDetails
建立关系的中心。
如果通知日期不是用户需要一直看到的,您也可以将其存储为NSTimeInterval
,它比 NSDate 轻一点,也很容易检查它是否已经过去。
【讨论】:
以上是关于在 Core Data 中分离单个对象模型的组件的主要内容,如果未能解决你的问题,请参考以下文章