【问题标题】:Does iOS Core Data Support Many-To-One Relationships? [duplicate]iOS Core Data 是否支持多对一关系? [复制]
【发布时间】:2014-04-03 17:30:37
【问题描述】:

我习惯于在 Java 应用程序中使用 Hibernate,当创建从 ObjectA 到 ReferenceObjectB 的链接时,多对一关系很常见。 ReferenceObjectB 可能是一个原子类,它与任何其他对象没有任何关系。 ReferenceObjectB 可以在多个其他对象中使用。

在我的 iOS 应用程序中,我使用 Core Data 作为数据模型。我创建了一个与 ReferenceObjectB 具有一对多关系的 ObjectA,并且创建时没有反向关系,因为我希望该关系像 Hibernate 中的多对一一样。

似乎有效。但是,Xcode 会产生一个警告:“错误配置的属性:TimeItem.extraData 应该有一个逆”这是一个警告,Core Data 应该注意,还是在这种情况下只是噪音?

【问题讨论】:

  • 感谢分享指向其他文章的链接。我将尝试使用反向关系。但是,我仍然认为一直需要逆是很奇怪的。也许我在想这个错误 - 在对象的内存图模型与数据库级别。就像我在最初的问题中所说的那样 - Hibernate 支持一种叫做多对一的东西,但是当你查看 Core Data 时,从未提到过这个术语。

标签: ios core-data


【解决方案1】:

在创建对象或将一个实体设置为另一个实体的属性时,需要正确操作对象的双边关系。核心数据可以自动设置一些关系,你不需要手动设置。

总体而言,使用单边关系并不总是危险的。

【讨论】:

  • 使用单边关系总是很危险。它迟早会造成数据损坏。它总是会导致数据性能问题。
【解决方案2】:

不是强制性的,但您会收到警告。阅读这篇文章:http://shanecrawford.org/2008/49/a-warning-about-your-inverse-relationships/

【讨论】:

    【解决方案3】:

    警告是有原因的。当您添加和(特别是)删除对象时,Core Data 在内部使用反向关系来管理数据存储内容。

    一般来说,每个关系都应该有一个逆关系。

    【讨论】:

    • 不知道为什么这被否决了。投票支持,因为这是准确的。
    • 反向关系如何影响 SQLLite 数据存储中的架构?是不是也必须在那里持久化?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多