iphone核心数据和实体继承

Posted

技术标签:

【中文标题】iphone核心数据和实体继承【英文标题】:iphone Core data and entity inheritance 【发布时间】:2010-12-27 18:14:24 【问题描述】:

这是一个两部分的问题,情况如下:

我有一个列出一组产品型号的应用。用户应该能够从此列表中选择他们特别拥有的产品型号。他们可以拥有超过 1 种相同类型的产品,并且还应该能够为他们拥有的产品设置自定义名称。所以我用两个实体建立了我的数据模型。产品和拥有的产品。 OwnedProduct 继承自 Product 实体并添加了 customName 属性。

问题 1:这是实现模型的最佳方式还是我应该对关系做一些事情?现在我没有任何关系。

下一个问题涉及从用户选择的产品之一实际创建 OwnedProduct 记录。

问题 2: 有没有办法获取选定的 Product 对象,复制它,然后将其转换为 OwnedProduct?还是我必须创建一个全新的 OwnedProduct 实例,然后从 Product 实例的属性中手动分配它的所有属性?

【问题讨论】:

【参考方案1】:

问题 1:这是实现模型的最佳方式还是我应该对关系做一些事情?现在我没有任何关系。

您是否计划在同一上下文中拥有多个所有者?

单个产品可以由具有不同自定义名称的不同所有者拥有吗?

如果是,我会看看人际关系。我不会因为所有权而复制产品。如果产品发生变化,它可能应该对所有所有者都发生变化。

满足您要求的可能数据模型:

问题 2:有没有办法获取选定的 Product 对象,复制它,然后将其转换为 OwnedProduct?还是我必须创建一个全新的 OwnedProduct 实例,然后从 Product 实例的属性中手动分配它的所有属性?

由于克隆将是您上下文中的一个单独实例,因此您必须创建一个新实例并复制所有必要的属性。您可以通过迭代 NSEntityDescription 属性和关系来加快速度。已经有一个solution 可以在 SO 上克隆 NSManagedObjects

【讨论】:

实际上这是一个单用户应用程序,所以不会有多个所有者。这会改变你的答案吗?此外,我认为“数量”属性不会起作用,因为每个拥有的产品都应该有一个自定义名称。感谢您提供图表。 我同意 Martin 的观点,即 OwnedProduct 应该与 Product 有关系而不是 OwnedProduct 是 Product 的子类/扩展。设计要求单个产品与多个 OwnedProduct 相关联。所以,如果不需要 Owner,那么 Product 和 OwnedProduct 之间就是一对多关系。 鉴于其他信息,我会更改我的建议。您的应用程序包含一个预定义的产品,但是一旦用户获得了产品的所有权,这两个产品就应该不再连接,而是可以独立编辑?在我的数据模型中,对于一个产品的多个所有权,您可以轻松创建不同的 ProductOwnership 对象来分配不同的自定义名称

以上是关于iphone核心数据和实体继承的主要内容,如果未能解决你的问题,请参考以下文章

NSMutableArray iPhone 的核心数据实体属性值

iPhone核心数据得到孙子

核心数据 - iCloud 行为

iPhone - 核心数据问题?

iPhone核心数据递归关系

核心数据和 iPhone 的 NSDecimalNumber 问题