在 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 还与称为ListItemEntity 建立一对多关系。所以换句话说,目前我有两个Entities,一个ListListItem。如果我将List 拆分为两个组件(ListListDetails),我的一对多关系是否仍然只是与List

【问题讨论】:

【参考方案1】:

除非您相当确定 name 或 uniqueID 会变得超长,否则即使有六个属性(特别是当两个属性是 BOOLs 时),内存占用也会非常小。

如果您发现需要获取大量列表实体但只需要几个属性的地方,您可以设置一个获取请求,将其返回类型设置为字典并指定您想要的属性。例如,您可以使用复合谓词抓取所有不完整、需要通知和日期已过的实体,然后让它返回字典中的名称和唯一 ID。

如果您确实将其拆分,那么List 很可能是与ListItemListDetails 建立关系的中心。

如果通知日期不是用户需要一直看到的,您也可以将其存储为NSTimeInterval,它比 NSDate 轻一点,也很容易检查它是否已经过去。

【讨论】:

以上是关于在 Core Data 中分离单个对象模型的组件的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI 如何从响应 JSON API 中分离单个数据

如何从模板组件中分离模板(延迟加载模板)

在 Django 中分离表单输入和模型验证?

在 React 中分离有状态和无状态组件的线应该在哪里?

在绘图应用程序中分离模型和视图/控制器

如何将一个 Core Data 模型迁移到一个全新的模型?