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导入(下一步)