我对人际关系有疑问。我必须使用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
答案 0 :(得分:3)
我解决了这个问题,我想念的是关系用户信息的mappedKeyName。
首先,我们需要为与JSON密钥对应的关系设置mappedKeyName。
如果你得到的JSON如下所示:
{
"status": 1,
"message": "success",
"player": {
"playerID": 1,
"teamID": 14,
"firstname": "NAME",
}
}
mappedKeyName 键将为player.teamID
relatedByAttribute 键将是teamID,它是Team实体的一个属性。
希望它有所帮助。
答案 1 :(得分:0)
看看我发布的另一个类似于你的问题的答案: