嵌套 NSManagedObject 是不是正确/安全?

Posted

技术标签:

【中文标题】嵌套 NSManagedObject 是不是正确/安全?【英文标题】:is it proper/safe to nest NSManagedObjects?嵌套 NSManagedObject 是否正确/安全? 【发布时间】:2012-07-14 01:13:56 【问题描述】:

我很好奇 NSManagedObjects 的结构,特别是它们的嵌套。这是我第一次设计数据模型,所以让我在我的问题之前解释一下。假设我有一个供用户使用的 NSManagedObject。用户有许多不同的属性:

名字:NSString 姓氏:NSString 简介:NSString 照片:NSData 电子邮件:NSString 注册时间戳:NSDate 密码:NSString 用户名:NSString 关注者:用户(多关系) 他们关注的人:用户(多关系)

该对象中有很多属性,而且可能还有更多。所以我的问题本质上是,嵌套 NSManagedObjects 是否安全,甚至合适?所以我拥有的不是所有这些属性:

信息:用户信息 注册:用户注册 关注者:用户 关注:用户

其中 UserInformation 和 UserRegistration 将是单独的 NSManagedObjects,它们包含一些原始属性。我知道这可能不是嵌套对象的最佳情况,但是如果我有更复杂的对象,如果它们嵌套起来会更容易理解。

提前感谢您的意见!

【问题讨论】:

【参考方案1】:

正确的做法是绘制 ER 模型并定义实体。如果这样做,您为 UserInformation 和 UserRegistration 定义一个与用户一对一关系的实体,那么这样做没有问题。对于追随者和以下情况,您必须定义自我关系(一对多自我实体https://***.com/a/4504770/474740)。

使用关系定义模型并用特定类型(一对一、一对多)标记它们。

请记住,保存和获取数据时如何更容易。

【讨论】:

【参考方案2】:

这是正确且安全的,但如果您不打算将它们变成原子的、可重用的或有其他一些可以从中受益的设计,建议您不要这样做。这就是为什么...您将不得不编写更长的语句来访问您的属性,获取的数据库操作必须包含连接以获取关系属性,并且您并没有真正建模正确的对象...但是如果您出于某种原因而不是不喜欢具有大量属性的模型,请继续。

【讨论】:

以上是关于嵌套 NSManagedObject 是不是正确/安全?的主要内容,如果未能解决你的问题,请参考以下文章

NSManagedObject changedValues 不正确

为啥自动创建的 NSManagedObject 子类没有“正确”标题?

CoreData 无法正确“创建 NSManagedObject 子类”Swift

如何为子类 NSManagedObject 正确实现自定义初始化程序

如何在应用程序退出时正确删除“临时”NSManagedObject

XCode4 无法正确生成 NSManagedObject 子类