首页 > 解决方案 > Core Data 与相似对象的多重关系,不能反转

问题描述

我有一个 Entity Storm,它有两个一对多关系,“历史”和“预测”这两个都是 NSSet,其中包含一个StormPosition包含时间、纬度和经度的实体。

我能够构建它,但是虽然我可以设置“历史”和“预测”关系,但它们似乎不能都指向类型StormPosition的对象,因为反向关系不能都指向风暴实体。

我认为这是因为当我这样做时:

myStormPosition.owner = self

它需要知道将其放入哪个 NSSet(历史或预测)。

我需要将这些混合成一个“轨道”关系吗?我宁愿不要,因为不必检查日期属性就可以将一组用于历史记录和一组用于预测。

此外,在程序的其他地方,我希望能够只使用一个StormPosition类型而不是一个HistoricPositionPredictedPosition类型,这实际上是相同的,但是会导致困难的类型转换,除非我给他们一个相同的父类。

标签: core-dataentityinverse

解决方案


这对我来说确实是一种罕见的情况,您可以从使用父实体/类中受益。请注意这一点,因为两者的所有实例都HistoricPositionPredictedPosition在持久存储中为两者的所有属性占用空间(因为它们有一个共同的父级)。

每次风暴会有多个预报吗?例如,第 1 天的预测轨迹,第 2 天的预测轨迹,……?

不过,它确实感觉像是一个重量级的解决方案。也许是包含位置和时间戳的协议?完全摆脱 Position 实体的概念?预测位置有一个有效时间,以及它发布的时间,而历史轨迹位置只有它被记录的时间。


推荐阅读