CoreData没有反向关系

时间:2014-02-24 16:20:09

标签: ios core-data

我有一个数据模型,我没有反向关系,我想知道是否有办法解决这个问题,因为XCode抱怨并且Apple说实体应该有反转。

我通过json api获得一些玩家统计数据。为了简化它,Player有3个统计数据,只有3个游戏模式别名Kits。每个Kit都有相同的属性,例如namescoretime

json看起来像这样

{ "player": { "uid": "123456", "name": "FooBar", "kits": { "support": { "id": 32, "score": 0, "stars": 0, "name": "Support", "time": 0, "spm": 0 }, "assault": { "id": 1, "score": 27624, "stars": 0, "name": "Assault", "time": 5329, "spm": 311.022706 }, "engineer": { "id": 2, "score": 44639, "stars": 0, "name": "Engineer", "time": 5758, "spm": 465.151094 } } } }

和我的模特一样

model http://f.cl.ly/items/0G2T1c0r3r1r2a3K1k10/Screen%20Shot%202014-02-24%20at%2017.13.28.png

有了这个,我可以使用

访问代码中的Kits

Player *player = .... Kit *supportKit = player.kits.support; ... // do whatever I want with the support kit

问题是,我的模特错了吗?如何建模核心数据,其中“一对多”的关系,但限于给定的数字和有序的事项。

欢呼声, 扬

2 个答案:

答案 0 :(得分:0)

我只在你的数据中看到2个表 - 玩家和“套件”包含3种类型id = 1 = assault,id = 2 = engineer和id = 32是支持。

您需要在2个表之间建立反向关系,因此person_to_kit是1到1,而kit_to_person是1到1. ....关系是虚拟的,不是基于任何特定的字段,尽管您的各个表将需要密钥指定。

答案 1 :(得分:0)

首先,你应该在核心数据中始终存在反比关系。即使你不使用这种关系 - 核心数据也会。

其次,核心数据不是数据库。它是可以持久保存到数据库的对象映射。因此,您不需要外键或ID或其他任何东西来表示关系。关系细节由Core Data处理。

如果这不是需要迁移的现有应用程序,则只需在模型中添加反向关系并将其设置为反向关系。您无需使用它,您无需设置或以任何方式触摸它。把它放在核心数据上。