我有一个数据模型,我没有反向关系,我想知道是否有办法解决这个问题,因为XCode抱怨并且Apple说实体应该有反转。
我通过json api获得一些玩家统计数据。为了简化它,Player
有3个统计数据,只有3个游戏模式别名Kits
。每个Kit
都有相同的属性,例如name
,score
或time
。
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
问题是,我的模特错了吗?如何建模核心数据,其中“一对多”的关系,但限于给定的数字和有序的事项。
欢呼声, 扬
答案 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处理。
如果这不是需要迁移的现有应用程序,则只需在模型中添加反向关系并将其设置为反向关系。您无需使用它,您无需设置或以任何方式触摸它。把它放在核心数据上。