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

时间:2014-02-27 11:08:20

标签: ios core-data magicalrecord

我对人际关系有疑问。我必须使用NSManagedObject类Team和Player。团队可以包含很多玩家。玩家只能包含一个团队。

以下是两个请求中的JSON:

/队

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

机/播放机

{
    "id" : 1,
    "name" : "D.J. 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            |

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

写代码

假设我已经拥有由NSDictionary代表的团队JSON。我做了什么:

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

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

第二个操作是让所有玩家使用您在JSON中可以看到的关键teamId将其连接到已在第一步创建的具体团队。

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

代码与此相同。

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

但是这些关系将无法正常工作,并且MagicalRecords不会将我的玩家与具体团队联系起来,因为我没有像我说的那样设置relatedByAttribute键。我真的需要帮助这个,因为我理解导入的基本思想,但无法理解我需要设置relatedByAttribute键的位置,我的意思是哪个实体和哪个属性。

我还看到了一些与实体有关的重复问题以及堆栈溢出问题,我认为这是另一个问题,但是如果你能提出建议它会很好,因为我从头开始并且可以使我的代码易于理解和没有其他问题。非常感谢你!

我使用的链接:magical import

2 个答案:

答案 0 :(得分:3)

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

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

如果你得到的JSON如下所示:

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

mappedKeyName 键将为player.teamID

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

希望它有所帮助。

enter image description here

答案 1 :(得分:0)

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

Magical Record import (next step)