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

Ios MagicalRecords从JSON/NSDictionary导入数据。导入关系,ios,core-data,magicalrecord,Ios,Core Data,Magicalrecord,我对人际关系有疑问。我必须管理对象类团队和球员。这个队可以容纳许多队员。玩家只能包含一个团队 以下是来自两个请求的JSON: /team { "id" : 1, "name" : "Chicago Bulls", "city" : "Chicago" }, { "id" : 2, "name" : "Detroit Pistons", "city" : "Detroit"

我对人际关系有疑问。我必须管理对象类团队和球员。这个队可以容纳许多队员。玩家只能包含一个团队

以下是来自两个请求的JSON:

/team

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

{
    "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            |
正如你们所看到的,我并没有为玩家实体设置teamId,因为我们需要使用relatedByAttribute键。这里的第一个问题是,我不知道需要在用户信息中为哪个属性、属性或关系设置relatedByAttribute键

编写代码部分

假设我已经得到了由NSDictionary表示的团队JSON。我所做的:

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

Team *team = [Team MR_createEntity];
[team MR_importValuesForKeysWithObject:dictionary];
第二个操作是获取所有玩家,并将他们附加到第一步中已经创建的具体团队,使用您可以在JSON中看到的关键团队ID

我在这一步上做什么。让我们假设我和第一个玩家得到了一本字典

代码与此相同

Player *player = [Player MR_createEntity];
[player MR_importValuesForKeysWithObject:dictionary];
但是这种关系不会起作用,MagicalRecords也不会将我的球员与具体球队联系起来,因为我没有像我说的那样设置relatedByAttribute键。我真的需要帮助,因为我理解导入的基本思想,但不理解需要在哪里设置relatedByAttribute键,我的意思是为哪个实体和哪个属性设置relatedByAttribute键

我在stack overflow上也看到了一些实体的重复问题,我认为这是另一个问题,但如果您能提出一些建议,这将是一件好事,因为我从头开始,可以使我的代码易于理解,并且没有其他问题。多谢各位


我使用的链接:

我解决了这个问题。我错过的一件事是关系用户信息的mappedKeyName

首先,我们需要为对应于JSON键的关系设置mappedKeyName

因此,如果您得到的JSON如下所示:

{
    "status": 1,
    "message": "success",
    "player": {
        "playerID": 1,
        "teamID": 14,
        "firstname": "NAME",
    }
}
mappedKeyName键将是player.teamID

relatedByAttribute键将是作为团队实体属性的teamID

希望它能帮助别人


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


您如何处理[M]任何关系?