MagicalRecords从JSON / NSDictionary导入数据。 导入关系

我有关系的问题。 我必须NSManagedObject类Team和Player。 团队可以包含很多玩家。 玩家只能包含一个团队。

这是来自两个请求的JSON:

/球队

{ "id" : 1, "name" : "Chicago Bulls", "city" : "Chicago" }, { "id" : 2, "name" : "Detroit Pistons", "city" : "Detroit" }, ... 

/播放器

 { "id" : 1, "name" : "DJ Augustin", "teamId" : 1 }, { "id" : 2, "name" : "Carlos Boozer", "teamId" : 1 }, ... 

设置xcdatamodeld实体

 Team Entity atribute | mappedKeyName | name | name | teamID | id | city | city | Player Entity atribute | mappedKeyName | name | name | playerID | id | 

正如你所看到的我没有设置teamId那里的Player实体,因为我们需要使用relatedByAttribute键。 首先问题在这里我不知道哪些属性,属性或关系我需要在用户信息中设置relatedByAttribute键。

写代码部分

假设我已经有了由NSDictionary表示的团队JSON。 我做的事:

此代码使用用户信息为Team实体的每个属性吹入从NSDictionary导入所有数据。 在这一步,一切都很好。

 Team *team = [Team MR_createEntity]; [team MR_importValuesForKeysWithObject:dictionary]; 

第二个操作是让所有玩家将它们附加到已经在第一步创build的具体团队,使用可以在JSON中看到的关键teamId。

我在这一步做了什么。 假设我有第一个玩家的NSDictionary。

代码与此相同。

 Player *player = [Player MR_createEntity]; [player MR_importValuesForKeysWithObject:dictionary]; 

但是关系不行,MagicalRecords也不会把我的玩家和具体的团队联系起来,因为我没有设置relatedByAttribute关键字。 我真的需要帮助,因为我了解导入的基本思想,但不能理解我需要设置relatedByAttribute键我指的是哪个实体和哪个属性。

我也看到了一些重复的实体问题以及堆栈溢出问题,我想这是另一个问题,但是如果你能提出一些build议,那么这将是一件好事,因为我从头开始,可以使我的代码容易理解,而且不会有其他问题。 万分感谢!

我使用的链接: 魔法导入

我解决了这个问题,我想念一个关系的用户信息mappedKeyName。

首先,我们需要为与JSON密钥对应的关系设置mappedKeyName。

所以万一JSON你看起来像这样:

 { "status": 1, "message": "success", "player": { "playerID": 1, "teamID": 14, "firstname": "NAME", } } 

mappedKeyName键将是player.teamID

relatedByAttribute键将是TeamID,它是Team实体的一个属性。

希望它可以帮助别人。

在这里输入图像说明

看看这个答案,我发布了另一个类似于你的问题:

魔法logging导入(下一步)